X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_client_curl.c;h=c50779916ff3fc40cf609c03e9ee13d48ffe46b7;hb=1bef05c9e90799c57722bdb4865e6829373fee20;hp=046314313b718335a76f84e1878ef8968faa079b;hpb=fb8725f76a3552eb157620c07bbef60cdcd632c2;p=m6w6%2Fext-http diff --git a/php_http_client_curl.c b/php_http_client_curl.c index 0463143..c507799 100644 --- a/php_http_client_curl.c +++ b/php_http_client_curl.c @@ -1111,11 +1111,14 @@ static ZEND_RESULT_CODE php_http_curle_option_set_proxyheader(php_http_option_t { if (header_key.key) { zend_string *zs = zval_get_string(header_val); + php_http_buffer_appendf(&header, "%s: %s", header_key.key->val, zs->val); + zend_string_release(zs); + php_http_buffer_fix(&header); curl->options.proxyheaders = curl_slist_append(curl->options.proxyheaders, header.data); php_http_buffer_reset(&header); - zend_string_release(zs); + } } ZEND_HASH_FOREACH_END(); @@ -1503,9 +1506,11 @@ static zval *php_http_curle_get_option(php_http_option_t *opt, HashTable *option zval *option; if ((option = php_http_option_get(opt, options, NULL))) { - Z_TRY_ADDREF_P(option); - convert_to_explicit_type_ex(option, opt->type); - zend_hash_update(&curl->options.cache, opt->name, option); + zval zopt; + + ZVAL_DUP(&zopt, option); + convert_to_explicit_type(option, opt->type); + zend_hash_update(&curl->options.cache, opt->name, &zopt); } return option; } @@ -1834,11 +1839,23 @@ static void php_http_client_curl_handler_dtor(php_http_client_curl_handler_t *ha php_http_buffer_dtor(&handler->options.cookies); zend_hash_destroy(&handler->options.cache); +#if PHP_HTTP_CURL_VERSION(7,21,3) + if (handler->options.resolve) { + curl_slist_free_all(handler->options.resolve); + handler->options.resolve = NULL; + } +#endif + if (handler->options.headers) { curl_slist_free_all(handler->options.headers); handler->options.headers = NULL; } + if (handler->options.proxyheaders) { + curl_slist_free_all(handler->options.proxyheaders); + handler->options.proxyheaders = NULL; + } + efree(handler); }