- fix memleak when http_get() etc intermit unexpectedly
[m6w6/ext-http] / http_request_api.c
index d9b1a2198a06067823881907a09bbad592407856..c7bdcb316705b1c24e7273ae09682f6c28a5358f 100644 (file)
@@ -433,9 +433,13 @@ PHP_HTTP_API STATUS _http_request_init(CURL *ch, http_request_method meth, char
        }
 #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)) {
+#ifdef HTTP_HAVE_ZLIB
+               HTTP_CURL_OPT(ENCODING, "gzip;q=1.0, deflate;q=0.5, *;q=0");
+#else
                HTTP_CURL_OPT(ENCODING, "");
+#endif
        }
 
        /* redirects, defaults to 0 */
@@ -739,14 +743,9 @@ PHP_HTTP_API void _http_request_info(CURL *ch, HashTable *info TSRMLS_DC)
 PHP_HTTP_API STATUS _http_request_ex(CURL *ch, http_request_method meth, char *url, http_request_body *body, HashTable *options, HashTable *info, phpstr *response TSRMLS_DC)
 {
        STATUS status;
-       zend_bool clean_curl;
+       zend_bool clean_curl = !ch;
 
-       if ((clean_curl = (!ch))) {
-               if (!(ch = curl_easy_init())) {
-                       http_error(HE_WARNING, HTTP_E_REQUEST, "Could not initialize curl.");
-                       return FAILURE;
-               }
-       }
+       HTTP_CHECK_CURL_INIT(ch, curl_easy_init(), return FAILURE);
 
        status =        ((SUCCESS == http_request_init(ch, meth, url, body, options)) &&
                                (SUCCESS == http_request_exec(ch, info, response, NULL))) ? SUCCESS : FAILURE;
@@ -975,6 +974,15 @@ static inline void _http_curl_defaults(CURL *ch)
 
 #endif /* HTTP_HAVE_CURL */
 
+zend_bool _http_request_supports_ssl(void)
+{
+#ifdef HTTP_NEED_SSL
+       return (zend_bool) 1;
+#else
+       return (zend_bool) 0;
+#endif
+}
+
 /*
  * Local variables:
  * tab-width: 4