X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl.c;h=8e53572c9ae4983ce320ed1e5a6dc03092300e79;hp=5dab9e210037a95b7fe055759f4fadaf68029ec6;hb=a2aa970a129880a247baea08927f0d84188a0b19;hpb=d28ddced9537977072dff996ccbb69f421ce48cf diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index 5dab9e2..8e53572 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -1760,6 +1760,34 @@ static ZEND_RESULT_CODE php_http_curlm_option_set_use_eventloop(php_http_option_ } #endif +static ZEND_RESULT_CODE php_http_curlm_option_set_share_cookies(php_http_option_t *opt, zval *value, void *userdata) +{ + php_http_client_t *client = userdata; + php_http_client_curl_t *curl = client->ctx; + CURLSHcode rc; + + if (Z_BVAL_P(value)) { + rc = curl_share_setopt(curl->handle->share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); + } else { + rc = curl_share_setopt(curl->handle->share, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_COOKIE); + } + return CURLSHE_OK == rc ? SUCCESS : FAILURE; +} + +static ZEND_RESULT_CODE php_http_curlm_option_set_share_ssl(php_http_option_t *opt, zval *value, void *userdata) +{ + php_http_client_t *client = userdata; + php_http_client_curl_t *curl = client->ctx; + CURLSHcode rc; + + if (Z_BVAL_P(value)) { + rc = curl_share_setopt(curl->handle->share, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); + } else { + rc = curl_share_setopt(curl->handle->share, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_SSL_SESSION); + } + return CURLSHE_OK == rc ? SUCCESS : FAILURE; +} + static void php_http_curlm_options_init(php_http_options_t *registry TSRMLS_DC) { php_http_option_t *opt; @@ -1811,6 +1839,15 @@ static void php_http_curlm_options_init(php_http_options_t *registry TSRMLS_DC) opt->setter = php_http_curlm_option_set_use_eventloop; } #endif + /* share */ + if ((opt = php_http_option_register(registry, ZEND_STRL("share_cookies"), 0, IS_BOOL))) { + opt->setter = php_http_curlm_option_set_share_cookies; + ZVAL_BOOL(&opt->defval, 1); + } + if ((opt = php_http_option_register(registry, ZEND_STRL("share_ssl"), 0, IS_BOOL))) { + opt->setter = php_http_curlm_option_set_share_ssl; + ZVAL_BOOL(&opt->defval, 1); + } } static ZEND_RESULT_CODE php_http_curlm_set_option(php_http_option_t *opt, zval *val, void *userdata)