From 02b2dbb7242cba4324ceebe27fe8ad1e5eedc818 Mon Sep 17 00:00:00 2001 From: Pierrick Charron Date: Wed, 3 Oct 2018 19:43:59 -0400 Subject: [PATCH] Add constants from curl 7.50 to 7.55 --- UPGRADING | 44 ++++++++ ext/curl/interface.c | 153 ++++++++++++++++++++++++++- ext/curl/tests/check_win_config.phpt | 1 + ext/curl/tests/curl_basic_023.phpt | 31 ++++++ ext/curl/tests/curl_basic_024.phpt | 32 ++++++ 5 files changed, 260 insertions(+), 1 deletion(-) create mode 100644 ext/curl/tests/curl_basic_023.phpt create mode 100644 ext/curl/tests/curl_basic_024.phpt diff --git a/UPGRADING b/UPGRADING index fb96de66932..847b4a38477 100644 --- a/UPGRADING +++ b/UPGRADING @@ -481,7 +481,51 @@ PCRE: ======================================== Curl: + . CURLAUTH_GSSAPI + . CURLE_WEIRD_SERVER_REPLY + . CURLINFO_CONTENT_LENGTH_DOWNLOAD_T + . CURLINFO_CONTENT_LENGTH_UPLOAD_T + . CURLINFO_HTTP_VERSION + . CURLINFO_PROTOCOL + . CURLINFO_PROXY_SSL_VERIFYRESULT + . CURLINFO_SCHEME + . CURLINFO_SIZE_DOWNLOAD_T + . CURLINFO_SIZE_UPLOAD_T + . CURLINFO_SPEED_DOWNLOAD_T + . CURLINFO_SPEED_UPLOAD_T + . CURL_MAX_READ_SIZE + . CURLOPT_ABSTRACT_UNIX_SOCKET + . CURLOPT_KEEP_SENDING_ON_ERROR + . CURLOPT_PRE_PROXY + . CURLOPT_PROXY_CAINFO + . CURLOPT_PROXY_CAPATH + . CURLOPT_PROXY_CRLFILE + . CURLOPT_PROXY_KEYPASSWD + . CURLOPT_PROXY_PINNEDPUBLICKEY + . CURLOPT_PROXY_SSLCERT + . CURLOPT_PROXY_SSLCERTTYPE + . CURLOPT_PROXY_SSL_CIPHER_LIST + . CURLOPT_PROXY_SSLKEY + . CURLOPT_PROXY_SSLKEYTYPE + . CURLOPT_PROXY_SSL_OPTIONS + . CURLOPT_PROXY_SSL_VERIFYHOST + . CURLOPT_PROXY_SSL_VERIFYPEER + . CURLOPT_PROXY_SSLVERSION + . CURLOPT_PROXY_TLSAUTH_PASSWORD + . CURLOPT_PROXY_TLSAUTH_TYPE + . CURLOPT_PROXY_TLSAUTH_USERNAME . CURLOPT_REQUEST_TARGET + . CURLOPT_SOCKS5_AUTH + . CURLOPT_SUPPRESS_CONNECT_HEADERS + . CURLPROXY_HTTPS + . CURL_SSLVERSION_MAX_DEFAULT + . CURL_SSLVERSION_MAX_NONE + . CURL_SSLVERSION_MAX_TLSv1_0 + . CURL_SSLVERSION_MAX_TLSv1_1 + . CURL_SSLVERSION_MAX_TLSv1_2 + . CURL_SSLVERSION_MAX_TLSv1_3 + . CURL_SSLVERSION_TLSv1_3 + . CURL_VERSION_HTTPS_PROXY JSON: . JSON_THROW_ON_ERROR diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 075491105ac..4b635899a6e 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -568,6 +568,9 @@ PHP_MINFO_FUNCTION(curl) #endif #if LIBCURL_VERSION_NUM >= 0x072f00 /* 7.47.0 */ {"PSL", CURL_VERSION_PSL}, +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* 7.52.0 */ + {"HTTPS_PROXY", CURL_VERSION_HTTPS_PROXY}, #endif {NULL, 0} }; @@ -1324,8 +1327,70 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLOPT_TCP_FASTOPEN); #endif +#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */ + REGISTER_CURL_CONSTANT(CURLINFO_HTTP_VERSION); +#endif + +#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */ + REGISTER_CURL_CONSTANT(CURLE_WEIRD_SERVER_REPLY); + REGISTER_CURL_CONSTANT(CURLOPT_KEEP_SENDING_ON_ERROR); +#endif + +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1_3); + REGISTER_CURL_CONSTANT(CURL_VERSION_HTTPS_PROXY); + REGISTER_CURL_CONSTANT(CURLINFO_PROTOCOL); + REGISTER_CURL_CONSTANT(CURLINFO_PROXY_SSL_VERIFYRESULT); + REGISTER_CURL_CONSTANT(CURLINFO_SCHEME); + REGISTER_CURL_CONSTANT(CURLOPT_PRE_PROXY); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAINFO); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAPATH); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CRLFILE); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_KEYPASSWD); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_PINNEDPUBLICKEY); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_CIPHER_LIST); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_OPTIONS); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYHOST); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYPEER); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERT); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERTTYPE); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEY); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEYTYPE); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLVERSION); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_PASSWORD); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_TYPE); + REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_USERNAME); + REGISTER_CURL_CONSTANT(CURLPROXY_HTTPS); +#endif + +#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */ + REGISTER_CURL_CONSTANT(CURL_MAX_READ_SIZE); + REGISTER_CURL_CONSTANT(CURLOPT_ABSTRACT_UNIX_SOCKET); +#endif + +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_DEFAULT); + REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_NONE); + REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_0); + REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_1); + REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_2); + REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_3); + REGISTER_CURL_CONSTANT(CURLOPT_SUPPRESS_CONNECT_HEADERS); +#endif + +#if LIBCURL_VERSION_NUM >= 0x073601 /* Available since 7.54.1 */ + REGISTER_CURL_CONSTANT(CURLAUTH_GSSAPI); +#endif + #if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_DOWNLOAD_T); + REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_UPLOAD_T); + REGISTER_CURL_CONSTANT(CURLINFO_SIZE_DOWNLOAD_T); + REGISTER_CURL_CONSTANT(CURLINFO_SIZE_UPLOAD_T); + REGISTER_CURL_CONSTANT(CURLINFO_SPEED_DOWNLOAD_T); + REGISTER_CURL_CONSTANT(CURLINFO_SPEED_UPLOAD_T); REGISTER_CURL_CONSTANT(CURLOPT_REQUEST_TARGET); + REGISTER_CURL_CONSTANT(CURLOPT_SOCKS5_AUTH); #endif REGISTER_CURL_CONSTANT(CURLOPT_SAFE_UPLOAD); @@ -2187,6 +2252,22 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ #if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */ case CURLOPT_TCP_FASTOPEN: #endif +#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */ + case CURLOPT_KEEP_SENDING_ON_ERROR: +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + case CURLOPT_PROXY_SSL_OPTIONS: + case CURLOPT_PROXY_SSL_VERIFYHOST: + case CURLOPT_PROXY_SSL_VERIFYPEER: + case CURLOPT_PROXY_SSLVERSION: +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + case CURLOPT_SUPPRESS_CONNECT_HEADERS: +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + case CURLOPT_SOCKS5_AUTH: +#endif + lval = zval_get_long(zvalue); #if LIBCURL_VERSION_NUM >= 0x071304 if ((option == CURLOPT_PROTOCOLS || option == CURLOPT_REDIR_PROTOCOLS) && @@ -2277,6 +2358,25 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{ #if LIBCURL_VERSION_NUM >= 0x072d00 /* Available since 7.45.0 */ case CURLOPT_DEFAULT_PROTOCOL: #endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + case CURLOPT_PRE_PROXY: + case CURLOPT_PROXY_CAINFO: + case CURLOPT_PROXY_CAPATH: + case CURLOPT_PROXY_CRLFILE: + case CURLOPT_PROXY_KEYPASSWD: + case CURLOPT_PROXY_PINNEDPUBLICKEY: + case CURLOPT_PROXY_SSL_CIPHER_LIST: + case CURLOPT_PROXY_SSLCERT: + case CURLOPT_PROXY_SSLCERTTYPE: + case CURLOPT_PROXY_SSLKEY: + case CURLOPT_PROXY_SSLKEYTYPE: + case CURLOPT_PROXY_TLSAUTH_PASSWORD: + case CURLOPT_PROXY_TLSAUTH_TYPE: + case CURLOPT_PROXY_TLSAUTH_USERNAME: +#endif +#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */ + case CURLOPT_ABSTRACT_UNIX_SOCKET: +#endif #if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ case CURLOPT_REQUEST_TARGET: #endif @@ -2976,10 +3076,13 @@ PHP_FUNCTION(curl_getinfo) long as there's no 32-bit int overflow. */ long l_code; double d_code; -#if LIBCURL_VERSION_NUM > 0x071301 +#if LIBCURL_VERSION_NUM > 0x071301 /* 7.19.1 */ struct curl_certinfo *ci = NULL; zval listcode; #endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* 7.55.0 */ + curl_off_t co; +#endif array_init(return_value); @@ -3076,6 +3179,42 @@ PHP_FUNCTION(curl_getinfo) if (curl_easy_getinfo(ch->cp, CURLINFO_LOCAL_PORT, &l_code) == CURLE_OK) { CAAL("local_port", l_code); } +#endif +#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */ + if (curl_easy_getinfo(ch->cp, CURLINFO_HTTP_VERSION, &l_code) == CURLE_OK) { + CAAL("http_version", l_code); + } +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + if (curl_easy_getinfo(ch->cp, CURLINFO_PROTOCOL, &l_code) == CURLE_OK) { + CAAL("protocol", l_code); + } + if (curl_easy_getinfo(ch->cp, CURLINFO_PROXY_SSL_VERIFYRESULT, &l_code) == CURLE_OK) { + CAAL("ssl_verifyresult", l_code); + } + if (curl_easy_getinfo(ch->cp, CURLINFO_SCHEME, &s_code) == CURLE_OK) { + CAAS("scheme", s_code); + } +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + if (curl_easy_getinfo(ch->cp, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &co) == CURLE_OK) { + CAAL("content_length_download", co); + } + if (curl_easy_getinfo(ch->cp, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &co) == CURLE_OK) { + CAAL("content_length_upload", co); + } + if (curl_easy_getinfo(ch->cp, CURLINFO_SIZE_DOWNLOAD_T, &co) == CURLE_OK) { + CAAL("size_download", co); + } + if (curl_easy_getinfo(ch->cp, CURLINFO_SIZE_UPLOAD_T, &co) == CURLE_OK) { + CAAL("size_upload", co); + } + if (curl_easy_getinfo(ch->cp, CURLINFO_SPEED_DOWNLOAD_T, &co) == CURLE_OK) { + CAAL("speed_download", co); + } + if (curl_easy_getinfo(ch->cp, CURLINFO_SPEED_UPLOAD_T, &co) == CURLE_OK) { + CAAL("speed_upload", co); + } #endif if (ch->header.str) { CAASTR("request_header", ch->header.str); @@ -3153,6 +3292,18 @@ PHP_FUNCTION(curl_getinfo) } break; } +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + case CURLINFO_OFF_T: + { + curl_off_t c_off; + if (curl_easy_getinfo(ch->cp, option, &c_off) == CURLE_OK) { + RETURN_LONG((long) c_off); + } else { + RETURN_FALSE; + } + break; + } +#endif default: RETURN_FALSE; } diff --git a/ext/curl/tests/check_win_config.phpt b/ext/curl/tests/check_win_config.phpt index 7f656ef9ea7..bd66ef0aa78 100644 --- a/ext/curl/tests/check_win_config.phpt +++ b/ext/curl/tests/check_win_config.phpt @@ -45,6 +45,7 @@ GSSAPI => No KERBEROS5 => Yes UNIX_SOCKETS => No PSL => No +HTTPS_PROXY => Yes Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp Host => %s-pc-win32 SSL Version => OpenSSL/%s diff --git a/ext/curl/tests/curl_basic_023.phpt b/ext/curl/tests/curl_basic_023.phpt new file mode 100644 index 00000000000..05c1362dcb6 --- /dev/null +++ b/ext/curl/tests/curl_basic_023.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test curl_getinfo() function with CURLINFO_HTTP_VERSION parameter +--SKIPIF-- += 7.50.0"); +} +?> +--FILE-- + +===DONE=== +--EXPECT-- +bool(true) +bool(true) +===DONE=== diff --git a/ext/curl/tests/curl_basic_024.phpt b/ext/curl/tests/curl_basic_024.phpt new file mode 100644 index 00000000000..00c1bab5b32 --- /dev/null +++ b/ext/curl/tests/curl_basic_024.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test curl_getinfo() function with CURLINFO_* from curl >= 7.52.0 +--SKIPIF-- += 7.52.0"); +} +?> +--FILE-- + +===DONE=== +--EXPECT-- +bool(true) +bool(true) +string(4) "HTTP" +===DONE===