X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_client_curl.c;h=baf99ceb30bd58dbc9adcb733d6a86285a7d9139;hp=1e6d6678fb97c7e36de82223cb4cc1718bccd448;hb=28e32ca3227d5a3a8b9a1f409aac4f7b6e3fa5ea;hpb=4a0658681a1fdc589a2193394b2642c034ef1bef diff --git a/php_http_client_curl.c b/php_http_client_curl.c index 1e6d667..baf99ce 100644 --- a/php_http_client_curl.c +++ b/php_http_client_curl.c @@ -815,19 +815,20 @@ static STATUS php_http_curle_option_set_cookiestore(php_http_option_t *opt, zval { php_http_client_curl_handler_t *curl = userdata; CURL *ch = curl->handle; + php_http_curle_storage_t *storage = php_http_curle_get_storage(curl->handle); - if (val) { - php_http_curle_storage_t *storage = php_http_curle_get_storage(curl->handle); - - if (storage->cookiestore) { - pefree(storage->cookiestore, 1); - } + if (storage->cookiestore) { + pefree(storage->cookiestore, 1); + } + if (val && Z_STRLEN_P(val)) { storage->cookiestore = pestrndup(Z_STRVAL_P(val), Z_STRLEN_P(val), 1); - if ( CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEFILE, storage->cookiestore) - || CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEJAR, storage->cookiestore) - ) { - return FAILURE; - } + } else { + storage->cookiestore = NULL; + } + if ( CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEFILE, storage->cookiestore) + || CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEJAR, storage->cookiestore) + ) { + return FAILURE; } return SUCCESS; } @@ -870,6 +871,11 @@ static STATUS php_http_curle_option_set_cookies(php_http_option_t *opt, zval *va } } } + } else { + php_http_buffer_reset(&curl->options.cookies); + if (CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIE, NULL)) { + return FAILURE; + } } return SUCCESS; } @@ -1303,7 +1309,7 @@ static void php_http_curle_options_init(php_http_options_t *registry TSRMLS_DC) } if ((opt = php_http_option_register(registry, ZEND_STRL("certtype"), CURLOPT_SSLCERTTYPE, IS_STRING))) { opt->flags |= PHP_HTTP_CURLE_OPTION_CHECK_STRLEN; - ZVAL_STRING(&opt->defval, "PEM", 1); + ZVAL_STRING(&opt->defval, "PEM", 0); } if ((opt = php_http_option_register(registry, ZEND_STRL("key"), CURLOPT_SSLKEY, IS_STRING))) { opt->flags |= PHP_HTTP_CURLE_OPTION_CHECK_STRLEN; @@ -1311,7 +1317,7 @@ static void php_http_curle_options_init(php_http_options_t *registry TSRMLS_DC) } if ((opt = php_http_option_register(registry, ZEND_STRL("keytype"), CURLOPT_SSLKEYTYPE, IS_STRING))) { opt->flags |= PHP_HTTP_CURLE_OPTION_CHECK_STRLEN; - ZVAL_STRING(&opt->defval, "PEM", 1); + ZVAL_STRING(&opt->defval, "PEM", 0); } if ((opt = php_http_option_register(registry, ZEND_STRL("keypasswd"), CURLOPT_SSLKEYPASSWD, IS_STRING))) { opt->flags |= PHP_HTTP_CURLE_OPTION_CHECK_STRLEN;