- fix memleak when http_get() etc intermit unexpectedly
authorMichael Wallner <mike@php.net>
Tue, 11 Oct 2005 10:25:37 +0000 (10:25 +0000)
committerMichael Wallner <mike@php.net>
Tue, 11 Oct 2005 10:25:37 +0000 (10:25 +0000)
- pass supported encodings if we've built with zlib

http_functions.c
http_request_api.c

index cbb487f132798457507f130277d8882b743d01dc..9bde4fb2792ceca13dd96a6eb9fe922ae38d0e1a 100644 (file)
@@ -1028,6 +1028,7 @@ PHP_FUNCTION(http_get)
        if (SUCCESS == http_get(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETURN_PHPSTR_VAL(&response);
        } else {
        if (SUCCESS == http_get(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETURN_PHPSTR_VAL(&response);
        } else {
+               phpstr_dtor(&response);
                RETURN_FALSE;
        }
 }
                RETURN_FALSE;
        }
 }
@@ -1061,6 +1062,7 @@ PHP_FUNCTION(http_head)
        if (SUCCESS == http_head(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETURN_PHPSTR_VAL(&response);
        } else {
        if (SUCCESS == http_head(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETURN_PHPSTR_VAL(&response);
        } else {
+               phpstr_dtor(&response);
                RETURN_FALSE;
        }
 }
                RETURN_FALSE;
        }
 }
@@ -1100,6 +1102,7 @@ PHP_FUNCTION(http_post_data)
        if (SUCCESS == http_post(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETVAL_PHPSTR_VAL(&response);
        } else {
        if (SUCCESS == http_post(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETVAL_PHPSTR_VAL(&response);
        } else {
+               phpstr_dtor(&response);
                RETVAL_FALSE;
        }
 }
                RETVAL_FALSE;
        }
 }
@@ -1139,6 +1142,7 @@ PHP_FUNCTION(http_post_fields)
        if (SUCCESS == http_post(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETVAL_PHPSTR_VAL(&response);
        } else {
        if (SUCCESS == http_post(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETVAL_PHPSTR_VAL(&response);
        } else {
+               phpstr_dtor(&response);
                RETVAL_FALSE;
        }
        http_request_body_dtor(&body);
                RETVAL_FALSE;
        }
        http_request_body_dtor(&body);
@@ -1189,6 +1193,7 @@ PHP_FUNCTION(http_put_file)
        if (SUCCESS == http_put(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETVAL_PHPSTR_VAL(&response);
        } else {
        if (SUCCESS == http_put(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETVAL_PHPSTR_VAL(&response);
        } else {
+               phpstr_dtor(&response);
                RETVAL_FALSE;
        }
        http_request_body_dtor(&body);
                RETVAL_FALSE;
        }
        http_request_body_dtor(&body);
@@ -1237,6 +1242,7 @@ PHP_FUNCTION(http_put_stream)
        if (SUCCESS == http_put(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETURN_PHPSTR_VAL(&response);
        } else {
        if (SUCCESS == http_put(URL, &body, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
                RETURN_PHPSTR_VAL(&response);
        } else {
+               phpstr_dtor(&response);
                RETURN_NULL();
        }
 }
                RETURN_NULL();
        }
 }
index 56373d7d68e3d2d67637e8fc247e32824597d53f..c7bdcb316705b1c24e7273ae09682f6c28a5358f 100644 (file)
@@ -433,9 +433,13 @@ PHP_HTTP_API STATUS _http_request_init(CURL *ch, http_request_method meth, char
        }
 #endif
 
        }
 #endif
 
-       /* compress, empty string enables deflate and gzip */
+       /* compress, empty string enables all supported if libcurl was build with zlib support */
        if ((zoption = http_curl_getopt(options, "compress", IS_BOOL)) && Z_LVAL_P(zoption)) {
        if ((zoption = http_curl_getopt(options, "compress", IS_BOOL)) && Z_LVAL_P(zoption)) {
+#ifdef HTTP_HAVE_ZLIB
+               HTTP_CURL_OPT(ENCODING, "gzip;q=1.0, deflate;q=0.5, *;q=0");
+#else
                HTTP_CURL_OPT(ENCODING, "");
                HTTP_CURL_OPT(ENCODING, "");
+#endif
        }
 
        /* redirects, defaults to 0 */
        }
 
        /* redirects, defaults to 0 */