X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl.c;h=45515fa2686316497d184982fe76d95521eca955;hp=b17d8a6927f30d7cf6c5d15165eba3927584a2e1;hb=8f8c6de6ae23ee114c9fac41d82ae866c1747132;hpb=a216cc2910ae493e82a01a8f552c9586839f69fa diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index b17d8a6..45515fa 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -516,7 +516,11 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) zval ti_array, subarray; struct curl_tlssessioninfo *ti; +#if PHP_HTTP_CURL_VERSION(7,48,0) + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_TLS_SSL_PTR, &ti)) { +#else if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_TLS_SESSION, &ti)) { +#endif char *backend; ZVAL_NULL(&subarray); @@ -530,15 +534,22 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) backend = "openssl"; #if PHP_HTTP_HAVE_LIBCURL_OPENSSL { +#if PHP_HTTP_CURL_VERSION(7,48,0) + SSL *ssl = ti->internals; + SSL_CTX *ctx = ssl ? SSL_get_SSL_CTX(ssl) : NULL; +#else SSL_CTX *ctx = ti->internals; +#endif array_init(&subarray); - add_assoc_long_ex(&subarray, ZEND_STRL("number"), SSL_CTX_sess_number(ctx)); - add_assoc_long_ex(&subarray, ZEND_STRL("connect"), SSL_CTX_sess_connect(ctx)); - add_assoc_long_ex(&subarray, ZEND_STRL("connect_good"), SSL_CTX_sess_connect_good(ctx)); - add_assoc_long_ex(&subarray, ZEND_STRL("connect_renegotiate"), SSL_CTX_sess_connect_renegotiate(ctx)); - add_assoc_long_ex(&subarray, ZEND_STRL("hits"), SSL_CTX_sess_hits(ctx)); - add_assoc_long_ex(&subarray, ZEND_STRL("cache_full"), SSL_CTX_sess_cache_full(ctx)); + if (ctx) { + add_assoc_long_ex(&subarray, ZEND_STRL("number"), SSL_CTX_sess_number(ctx)); + add_assoc_long_ex(&subarray, ZEND_STRL("connect"), SSL_CTX_sess_connect(ctx)); + add_assoc_long_ex(&subarray, ZEND_STRL("connect_good"), SSL_CTX_sess_connect_good(ctx)); + add_assoc_long_ex(&subarray, ZEND_STRL("connect_renegotiate"), SSL_CTX_sess_connect_renegotiate(ctx)); + add_assoc_long_ex(&subarray, ZEND_STRL("hits"), SSL_CTX_sess_hits(ctx)); + add_assoc_long_ex(&subarray, ZEND_STRL("cache_full"), SSL_CTX_sess_cache_full(ctx)); + } } #endif break; @@ -550,11 +561,13 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) char *desc; array_init(&subarray); - if ((desc = gnutls_session_get_desc(sess))) { - add_assoc_string_ex(&subarray, ZEND_STRL("desc"), desc); - gnutls_free(desc); + if (sess) { + if ((desc = gnutls_session_get_desc(sess))) { + add_assoc_string_ex(&subarray, ZEND_STRL("desc"), desc); + gnutls_free(desc); + } + add_assoc_bool_ex(&subarray, ZEND_STRL("resumed"), gnutls_session_is_resumed(sess)); } - add_assoc_bool_ex(&subarray, ZEND_STRL("resumed"), gnutls_session_is_resumed(sess)); } #endif break; @@ -2061,6 +2074,8 @@ static void php_http_client_curl_handler_clear(php_http_client_curl_handler_t *h curl_easy_setopt(handler->handle, CURLOPT_DEBUGFUNCTION, NULL); curl_easy_setopt(handler->handle, CURLOPT_COOKIELIST, "FLUSH"); curl_easy_setopt(handler->handle, CURLOPT_SHARE, NULL); + /* see gh issue #84 */ + curl_easy_setopt(handler->handle, CURLOPT_COOKIEJAR, NULL); } static void php_http_client_curl_handler_dtor(php_http_client_curl_handler_t *handler)