summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierrick Charron <pierrick@php.net>2018-10-03 19:43:59 -0400
committerPierrick Charron <pierrick@php.net>2018-10-03 19:43:59 -0400
commit02b2dbb7242cba4324ceebe27fe8ad1e5eedc818 (patch)
tree63af11ac9fecf8297779fccd17ad48a64b713b27
parent6af14492a5eedd0f91b6b52a21eb48c8b6cae7b0 (diff)
downloadphp-git-02b2dbb7242cba4324ceebe27fe8ad1e5eedc818.tar.gz
Add constants from curl 7.50 to 7.55
-rw-r--r--UPGRADING44
-rw-r--r--ext/curl/interface.c153
-rw-r--r--ext/curl/tests/check_win_config.phpt1
-rw-r--r--ext/curl/tests/curl_basic_023.phpt31
-rw-r--r--ext/curl/tests/curl_basic_024.phpt32
5 files changed, 260 insertions, 1 deletions
diff --git a/UPGRADING b/UPGRADING
index fb96de6693..847b4a3847 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 075491105a..4b635899a6 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -569,6 +569,9 @@ PHP_MINFO_FUNCTION(curl)
#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);
@@ -3077,6 +3180,42 @@ PHP_FUNCTION(curl_getinfo)
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 7f656ef9ea..bd66ef0aa7 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 0000000000..05c1362dcb
--- /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--
+<?php if (!extension_loaded("curl")) print "skip";
+$curl_version = curl_version();
+if ($curl_version['version_number'] < 0x073200) {
+ exit("skip: test works only with curl >= 7.50.0");
+}
+?>
+--FILE--
+<?php
+
+include 'server.inc';
+
+$ch = curl_init();
+var_dump(0 === curl_getinfo($ch, CURLINFO_HTTP_VERSION));
+
+$host = curl_cli_server_start();
+
+$url = "{$host}/get.php?test=";
+curl_setopt($ch, CURLOPT_URL, $url);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+curl_exec($ch);
+var_dump(CURL_HTTP_VERSION_1_1 === curl_getinfo($ch, CURLINFO_HTTP_VERSION));
+curl_close($ch);
+?>
+===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 0000000000..00c1bab5b3
--- /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--
+<?php if (!extension_loaded("curl")) print "skip";
+$curl_version = curl_version();
+if ($curl_version['version_number'] < 0x073400) {
+ exit("skip: test works only with curl >= 7.52.0");
+}
+?>
+--FILE--
+<?php
+
+include 'server.inc';
+
+$ch = curl_init();
+$host = curl_cli_server_start();
+
+$url = "{$host}/get.php?test=";
+curl_setopt($ch, CURLOPT_URL, $url);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+curl_exec($ch);
+var_dump(CURLPROTO_HTTP === curl_getinfo($ch, CURLINFO_PROTOCOL));
+var_dump(0 === curl_getinfo($ch, CURLINFO_PROXY_SSL_VERIFYRESULT));
+var_dump(curl_getinfo($ch, CURLINFO_SCHEME));
+curl_close($ch);
+?>
+===DONE===
+--EXPECT--
+bool(true)
+bool(true)
+string(4) "HTTP"
+===DONE===