X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_client_curl.c;h=4decc7af20c8e7a234ab9492a775fa5f97a6cac1;hp=8c38c6c60f287d634b80f89e50ad69ed3b0fc45c;hb=HEAD;hpb=7a7c528439652b496bd5c62446566f21ba9283bd diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c index 8c38c6c..4decc7a 100644 --- a/src/php_http_client_curl.c +++ b/src/php_http_client_curl.c @@ -313,14 +313,14 @@ static int php_http_curle_raw_callback(CURL *ch, curl_infotype type, char *data, return 0; } -static int php_http_curle_header_callback(char *data, size_t n, size_t l, void *arg) +static size_t php_http_curle_header_callback(char *data, size_t n, size_t l, void *arg) { php_http_client_curl_handler_t *h = arg; return php_http_buffer_append(&h->response.headers, data, n * l); } -static int php_http_curle_body_callback(char *data, size_t n, size_t l, void *arg) +static size_t php_http_curle_body_callback(char *data, size_t n, size_t l, void *arg) { php_http_client_curl_handler_t *h = arg; @@ -367,18 +367,34 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) ZVAL_DOUBLE(&tmp, d); zend_hash_str_update(info, "size_upload", lenof("size_upload"), &tmp); } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_SIZE_UPLOAD_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "size_upload_t", lenof("size_upload_t"), &tmp); + } if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_SIZE_DOWNLOAD, &d)) { ZVAL_DOUBLE(&tmp, d); zend_hash_str_update(info, "size_download", lenof("size_download"), &tmp); } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_SIZE_DOWNLOAD_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "size_download_t", lenof("size_download_t"), &tmp); + } if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_SPEED_DOWNLOAD, &d)) { ZVAL_DOUBLE(&tmp, d); zend_hash_str_update(info, "speed_download", lenof("speed_download"), &tmp); } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_SPEED_DOWNLOAD_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "speed_download_t", lenof("speed_download_t"), &tmp); + } if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_SPEED_UPLOAD, &d)) { ZVAL_DOUBLE(&tmp, d); zend_hash_str_update(info, "speed_upload", lenof("speed_upload"), &tmp); } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_SPEED_UPLOAD_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "speed_upload_t", lenof("speed_upload_t"), &tmp); + } if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_HEADER_SIZE, &l)) { ZVAL_LONG(&tmp, l); zend_hash_str_update(info, "header_size", lenof("header_size"), &tmp); @@ -395,14 +411,26 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) ZVAL_LONG(&tmp, l); zend_hash_str_update(info, "filetime", lenof("filetime"), &tmp); } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_FILETIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "filetime_t", lenof("filetime_t"), &tmp); + } if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &d)) { ZVAL_DOUBLE(&tmp, d); zend_hash_str_update(info, "content_length_download", lenof("content_length_download"), &tmp); } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "content_length_download_t", lenof("content_length_download_t"), &tmp); + } if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_CONTENT_LENGTH_UPLOAD, &d)) { ZVAL_DOUBLE(&tmp, d); zend_hash_str_update(info, "content_length_upload", lenof("content_length_upload"), &tmp); } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "content_length_upload_t", lenof("content_length_upload_t"), &tmp); + } if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_STARTTRANSFER_TIME, &d)) { ZVAL_DOUBLE(&tmp, d); zend_hash_str_update(info, "starttransfer_time", lenof("starttransfer_time"), &tmp); @@ -513,6 +541,34 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) zend_hash_str_update(info, "scheme", lenof("scheme"), &tmp); } #endif + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_TOTAL_TIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "total_time_t", lenof("total_time_t"), &tmp); + } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_NAMELOOKUP_TIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "namelookup_time_t", lenof("namelookup_time_t"), &tmp); + } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_CONNECT_TIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "connect_time_t", lenof("connect_time_t"), &tmp); + } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_PRETRANSFER_TIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "pretransfer_time_t", lenof("pretransfer_time_t"), &tmp); + } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_STARTTRANSFER_TIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "starttransfer_time_t", lenof("starttransfer_time_t"), &tmp); + } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_REDIRECT_TIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "redirect_time_t", lenof("redirect_time_t"), &tmp); + } + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_APPCONNECT_TIME_T, &o)) { + ZVAL_LONG(&tmp, o); + zend_hash_str_update(info, "appconnect_time_t", lenof("appconnect_time_t"), &tmp); + } #if PHP_HTTP_CURL_VERSION(7,66,0) if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_RETRY_AFTER, &o)) { ZVAL_LONG(&tmp, o); @@ -531,6 +587,24 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) zend_hash_str_update(info, "proxy_error", lenof("proxy_error"), &tmp); } #endif +#if PHP_HTTP_CURL_VERSION(7,76,0) + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_REFERER, &c)) { + ZVAL_STRING(&tmp, STR_PTR(c)); + zend_hash_str_update(info, "referer", lenof("referer"), &tmp); + } +#endif +#if PHP_HTTP_CURL_VERSION(7,84,0) + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_CAINFO, &c)) { + ZVAL_STRING(&tmp, STR_PTR(c)); + zend_hash_str_update(info, "cainfo", lenof("cainfo"), &tmp); + } +#endif +#if PHP_HTTP_CURL_VERSION(7,84,0) + if (CURLE_OK == curl_easy_getinfo(ch, CURLINFO_CAPATH, &c)) { + ZVAL_STRING(&tmp, STR_PTR(c)); + zend_hash_str_update(info, "capath", lenof("capath"), &tmp); + } +#endif /* END::CURLINFO */ @@ -630,8 +704,9 @@ static ZEND_RESULT_CODE php_http_curle_get_info(CURL *ch, HashTable *info) #if (PHP_HTTP_CURL_VERSION(7,19,1) && PHP_HTTP_HAVE_LIBCURL_OPENSSL) || \ (PHP_HTTP_CURL_VERSION(7,34,0) && PHP_HTTP_HAVE_LIBCURL_NSS) || \ + (PHP_HTTP_CURL_VERSION(7,39,0) && PHP_HTTP_HAVE_LIBCURL_GSKIT) || \ (PHP_HTTP_CURL_VERSION(7,42,0) && PHP_HTTP_HAVE_LIBCURL_GNUTLS) || \ - (PHP_HTTP_CURL_VERSION(7,39,0) && PHP_HTTP_HAVE_LIBCURL_GSKIT) + (PHP_HTTP_CURL_VERSION(7,79,0) && PHP_HTTP_HAVE_LIBCURL_SECURETRANSPORT) { int i; zval ci_array, subarray; @@ -1202,8 +1277,10 @@ static ZEND_RESULT_CODE php_http_curle_option_set_ssl_tlsauthtype(php_http_optio if (val && Z_LVAL_P(val)) { switch (Z_LVAL_P(val)) { + case CURL_TLSAUTH_NONE: + break; case CURL_TLSAUTH_SRP: - if (CURLE_OK == curl_easy_setopt(ch, opt->option, PHP_HTTP_LIBCURL_TLSAUTH_SRP)) { + if (CURLE_OK == curl_easy_setopt(ch, opt->option, "SRP")) { return SUCCESS; } /* no break */ @@ -1211,7 +1288,7 @@ static ZEND_RESULT_CODE php_http_curle_option_set_ssl_tlsauthtype(php_http_optio return FAILURE; } } - if (CURLE_OK != curl_easy_setopt(ch, opt->option, PHP_HTTP_LIBCURL_TLSAUTH_DEF)) { + if (CURLE_OK != curl_easy_setopt(ch, opt->option, "NONE")) { return FAILURE; } return SUCCESS;