- rerun only on Z_BUF_ERROR
[m6w6/ext-http] / http_encoding_api.c
index f0328cdabfd4832978b26d0afd83967ba8c561f0..b87f1c08ed3d420064a2675eccb8f1c1196e77bb 100644 (file)
@@ -120,7 +120,7 @@ inline void http_init_gzencode_buffer(z_stream *Z, const char *data, size_t data
        Z->avail_in  = data_len;
        Z->avail_out = HTTP_GZBUFLEN(data_len) + HTTP_GZSAFPAD - 1;
        
-       *buf_ptr = emalloc(HTTP_GZBUFLEN(data_len) + sizeof(http_gzencode_header));
+       *buf_ptr = emalloc(HTTP_GZBUFLEN(data_len) + sizeof(http_gzencode_header) + HTTP_GZSAFPAD);
        memcpy(*buf_ptr, http_gzencode_header, sizeof(http_gzencode_header));
        
        Z->next_out = *buf_ptr + sizeof(http_gzencode_header);
@@ -297,7 +297,7 @@ PHP_HTTP_API STATUS _http_encoding_inflate(const char *data, size_t data_len, ch
                                }
                        }
                }
-       } while (max < HTTP_GZMAXTRY);
+       } while (max < HTTP_GZMAXTRY && status == Z_BUF_ERROR);
        
        http_error_ex(HE_WARNING, HTTP_E_ENCODING, "Could not inflate data: %s", zError(status));
        return FAILURE;