- lotta changes asked by Ilia
[m6w6/ext-http] / http_encoding_api.c
index eecbbab5dad9650ac4107fa37034c8d7e1ed5c3f..f5c04949a4a7e8a68017b3e813a5f89286b18f36 100644 (file)
 #ifdef HAVE_CONFIG_H
 #      include "config.h"
 #endif
-#include "php.h"
-
-#include "php_http_encoding_api.h"
 #include "php_http.h"
-#include "php_http_api.h"
 
-#ifdef HTTP_HAVE_ZLIB
-#      include "php_http_send_api.h"
-#      include "php_http_headers_api.h"
-#      include <zlib.h>
-#endif
+#include "php_http_api.h"
+#include "php_http_encoding_api.h"
+#include "php_http_send_api.h"
+#include "php_http_headers_api.h"
 
 ZEND_EXTERN_MODULE_GLOBALS(http);
 
@@ -477,6 +472,11 @@ PHP_HTTP_API STATUS _http_encoding_inflate(const char *data, size_t data_len, ch
                                        *decoded_len = http_finish_buffer(Z.total_out, decoded);
                                        return SUCCESS;
                                }
+                       } else {
+                               inflateEnd(&Z);
+                               if (status == Z_OK) {
+                                       status = Z_BUF_ERROR;
+                               }
                        }
                }
        } while (++max < HTTP_ENCODING_MAXTRY && status == Z_BUF_ERROR);
@@ -520,7 +520,7 @@ PHP_HTTP_API STATUS _http_encoding_stream_init(http_encoding_stream *s, int gzip
                HTTP_ENCODING_STREAM_ERROR(status, NULL);
        }
        
-       if (s->gzip = gzip) {
+       if ((s->gzip = gzip)) {
                s->crc = crc32(0L, Z_NULL, 0);
                *encoded_len = sizeof(http_encoding_gzip_header);
                *encoded = emalloc(*encoded_len);
@@ -622,7 +622,7 @@ PHP_HTTP_API zend_bool _http_encoding_response_start(size_t content_length TSRML
                        
                        HTTP_G(send).gzip_encoding = 0;
                        
-                       if (selected = http_negotiate_encoding(&zsupported)) {
+                       if ((selected = http_negotiate_encoding(&zsupported))) {
                                STATUS hs = FAILURE;
                                char *encoding = NULL;
                                ulong idx;