Skip to content

Commit 02b2dbb

Browse files
committed
Add constants from curl 7.50 to 7.55
1 parent 6af1449 commit 02b2dbb

File tree

5 files changed

+260
-1
lines changed

5 files changed

+260
-1
lines changed

UPGRADING

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,51 @@ PCRE:
481481
========================================
482482

483483
Curl:
484+
. CURLAUTH_GSSAPI
485+
. CURLE_WEIRD_SERVER_REPLY
486+
. CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
487+
. CURLINFO_CONTENT_LENGTH_UPLOAD_T
488+
. CURLINFO_HTTP_VERSION
489+
. CURLINFO_PROTOCOL
490+
. CURLINFO_PROXY_SSL_VERIFYRESULT
491+
. CURLINFO_SCHEME
492+
. CURLINFO_SIZE_DOWNLOAD_T
493+
. CURLINFO_SIZE_UPLOAD_T
494+
. CURLINFO_SPEED_DOWNLOAD_T
495+
. CURLINFO_SPEED_UPLOAD_T
496+
. CURL_MAX_READ_SIZE
497+
. CURLOPT_ABSTRACT_UNIX_SOCKET
498+
. CURLOPT_KEEP_SENDING_ON_ERROR
499+
. CURLOPT_PRE_PROXY
500+
. CURLOPT_PROXY_CAINFO
501+
. CURLOPT_PROXY_CAPATH
502+
. CURLOPT_PROXY_CRLFILE
503+
. CURLOPT_PROXY_KEYPASSWD
504+
. CURLOPT_PROXY_PINNEDPUBLICKEY
505+
. CURLOPT_PROXY_SSLCERT
506+
. CURLOPT_PROXY_SSLCERTTYPE
507+
. CURLOPT_PROXY_SSL_CIPHER_LIST
508+
. CURLOPT_PROXY_SSLKEY
509+
. CURLOPT_PROXY_SSLKEYTYPE
510+
. CURLOPT_PROXY_SSL_OPTIONS
511+
. CURLOPT_PROXY_SSL_VERIFYHOST
512+
. CURLOPT_PROXY_SSL_VERIFYPEER
513+
. CURLOPT_PROXY_SSLVERSION
514+
. CURLOPT_PROXY_TLSAUTH_PASSWORD
515+
. CURLOPT_PROXY_TLSAUTH_TYPE
516+
. CURLOPT_PROXY_TLSAUTH_USERNAME
484517
. CURLOPT_REQUEST_TARGET
518+
. CURLOPT_SOCKS5_AUTH
519+
. CURLOPT_SUPPRESS_CONNECT_HEADERS
520+
. CURLPROXY_HTTPS
521+
. CURL_SSLVERSION_MAX_DEFAULT
522+
. CURL_SSLVERSION_MAX_NONE
523+
. CURL_SSLVERSION_MAX_TLSv1_0
524+
. CURL_SSLVERSION_MAX_TLSv1_1
525+
. CURL_SSLVERSION_MAX_TLSv1_2
526+
. CURL_SSLVERSION_MAX_TLSv1_3
527+
. CURL_SSLVERSION_TLSv1_3
528+
. CURL_VERSION_HTTPS_PROXY
485529

486530
JSON:
487531
. JSON_THROW_ON_ERROR

ext/curl/interface.c

Lines changed: 152 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,9 @@ PHP_MINFO_FUNCTION(curl)
568568
#endif
569569
#if LIBCURL_VERSION_NUM >= 0x072f00 /* 7.47.0 */
570570
{"PSL", CURL_VERSION_PSL},
571+
#endif
572+
#if LIBCURL_VERSION_NUM >= 0x073400 /* 7.52.0 */
573+
{"HTTPS_PROXY", CURL_VERSION_HTTPS_PROXY},
571574
#endif
572575
{NULL, 0}
573576
};
@@ -1324,8 +1327,70 @@ PHP_MINIT_FUNCTION(curl)
13241327
REGISTER_CURL_CONSTANT(CURLOPT_TCP_FASTOPEN);
13251328
#endif
13261329

1330+
#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */
1331+
REGISTER_CURL_CONSTANT(CURLINFO_HTTP_VERSION);
1332+
#endif
1333+
1334+
#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */
1335+
REGISTER_CURL_CONSTANT(CURLE_WEIRD_SERVER_REPLY);
1336+
REGISTER_CURL_CONSTANT(CURLOPT_KEEP_SENDING_ON_ERROR);
1337+
#endif
1338+
1339+
#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
1340+
REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1_3);
1341+
REGISTER_CURL_CONSTANT(CURL_VERSION_HTTPS_PROXY);
1342+
REGISTER_CURL_CONSTANT(CURLINFO_PROTOCOL);
1343+
REGISTER_CURL_CONSTANT(CURLINFO_PROXY_SSL_VERIFYRESULT);
1344+
REGISTER_CURL_CONSTANT(CURLINFO_SCHEME);
1345+
REGISTER_CURL_CONSTANT(CURLOPT_PRE_PROXY);
1346+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAINFO);
1347+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAPATH);
1348+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CRLFILE);
1349+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_KEYPASSWD);
1350+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_PINNEDPUBLICKEY);
1351+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_CIPHER_LIST);
1352+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_OPTIONS);
1353+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYHOST);
1354+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYPEER);
1355+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERT);
1356+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERTTYPE);
1357+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEY);
1358+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEYTYPE);
1359+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLVERSION);
1360+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_PASSWORD);
1361+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_TYPE);
1362+
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_USERNAME);
1363+
REGISTER_CURL_CONSTANT(CURLPROXY_HTTPS);
1364+
#endif
1365+
1366+
#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */
1367+
REGISTER_CURL_CONSTANT(CURL_MAX_READ_SIZE);
1368+
REGISTER_CURL_CONSTANT(CURLOPT_ABSTRACT_UNIX_SOCKET);
1369+
#endif
1370+
1371+
#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */
1372+
REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_DEFAULT);
1373+
REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_NONE);
1374+
REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_0);
1375+
REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_1);
1376+
REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_2);
1377+
REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_3);
1378+
REGISTER_CURL_CONSTANT(CURLOPT_SUPPRESS_CONNECT_HEADERS);
1379+
#endif
1380+
1381+
#if LIBCURL_VERSION_NUM >= 0x073601 /* Available since 7.54.1 */
1382+
REGISTER_CURL_CONSTANT(CURLAUTH_GSSAPI);
1383+
#endif
1384+
13271385
#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
1386+
REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_DOWNLOAD_T);
1387+
REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_UPLOAD_T);
1388+
REGISTER_CURL_CONSTANT(CURLINFO_SIZE_DOWNLOAD_T);
1389+
REGISTER_CURL_CONSTANT(CURLINFO_SIZE_UPLOAD_T);
1390+
REGISTER_CURL_CONSTANT(CURLINFO_SPEED_DOWNLOAD_T);
1391+
REGISTER_CURL_CONSTANT(CURLINFO_SPEED_UPLOAD_T);
13281392
REGISTER_CURL_CONSTANT(CURLOPT_REQUEST_TARGET);
1393+
REGISTER_CURL_CONSTANT(CURLOPT_SOCKS5_AUTH);
13291394
#endif
13301395

13311396
REGISTER_CURL_CONSTANT(CURLOPT_SAFE_UPLOAD);
@@ -2187,6 +2252,22 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
21872252
#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */
21882253
case CURLOPT_TCP_FASTOPEN:
21892254
#endif
2255+
#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */
2256+
case CURLOPT_KEEP_SENDING_ON_ERROR:
2257+
#endif
2258+
#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
2259+
case CURLOPT_PROXY_SSL_OPTIONS:
2260+
case CURLOPT_PROXY_SSL_VERIFYHOST:
2261+
case CURLOPT_PROXY_SSL_VERIFYPEER:
2262+
case CURLOPT_PROXY_SSLVERSION:
2263+
#endif
2264+
#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */
2265+
case CURLOPT_SUPPRESS_CONNECT_HEADERS:
2266+
#endif
2267+
#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
2268+
case CURLOPT_SOCKS5_AUTH:
2269+
#endif
2270+
21902271
lval = zval_get_long(zvalue);
21912272
#if LIBCURL_VERSION_NUM >= 0x071304
21922273
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) /* {{{
22772358
#if LIBCURL_VERSION_NUM >= 0x072d00 /* Available since 7.45.0 */
22782359
case CURLOPT_DEFAULT_PROTOCOL:
22792360
#endif
2361+
#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
2362+
case CURLOPT_PRE_PROXY:
2363+
case CURLOPT_PROXY_CAINFO:
2364+
case CURLOPT_PROXY_CAPATH:
2365+
case CURLOPT_PROXY_CRLFILE:
2366+
case CURLOPT_PROXY_KEYPASSWD:
2367+
case CURLOPT_PROXY_PINNEDPUBLICKEY:
2368+
case CURLOPT_PROXY_SSL_CIPHER_LIST:
2369+
case CURLOPT_PROXY_SSLCERT:
2370+
case CURLOPT_PROXY_SSLCERTTYPE:
2371+
case CURLOPT_PROXY_SSLKEY:
2372+
case CURLOPT_PROXY_SSLKEYTYPE:
2373+
case CURLOPT_PROXY_TLSAUTH_PASSWORD:
2374+
case CURLOPT_PROXY_TLSAUTH_TYPE:
2375+
case CURLOPT_PROXY_TLSAUTH_USERNAME:
2376+
#endif
2377+
#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */
2378+
case CURLOPT_ABSTRACT_UNIX_SOCKET:
2379+
#endif
22802380
#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
22812381
case CURLOPT_REQUEST_TARGET:
22822382
#endif
@@ -2976,10 +3076,13 @@ PHP_FUNCTION(curl_getinfo)
29763076
long as there's no 32-bit int overflow. */
29773077
long l_code;
29783078
double d_code;
2979-
#if LIBCURL_VERSION_NUM > 0x071301
3079+
#if LIBCURL_VERSION_NUM > 0x071301 /* 7.19.1 */
29803080
struct curl_certinfo *ci = NULL;
29813081
zval listcode;
29823082
#endif
3083+
#if LIBCURL_VERSION_NUM >= 0x073700 /* 7.55.0 */
3084+
curl_off_t co;
3085+
#endif
29833086

29843087
array_init(return_value);
29853088

@@ -3076,6 +3179,42 @@ PHP_FUNCTION(curl_getinfo)
30763179
if (curl_easy_getinfo(ch->cp, CURLINFO_LOCAL_PORT, &l_code) == CURLE_OK) {
30773180
CAAL("local_port", l_code);
30783181
}
3182+
#endif
3183+
#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */
3184+
if (curl_easy_getinfo(ch->cp, CURLINFO_HTTP_VERSION, &l_code) == CURLE_OK) {
3185+
CAAL("http_version", l_code);
3186+
}
3187+
#endif
3188+
#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
3189+
if (curl_easy_getinfo(ch->cp, CURLINFO_PROTOCOL, &l_code) == CURLE_OK) {
3190+
CAAL("protocol", l_code);
3191+
}
3192+
if (curl_easy_getinfo(ch->cp, CURLINFO_PROXY_SSL_VERIFYRESULT, &l_code) == CURLE_OK) {
3193+
CAAL("ssl_verifyresult", l_code);
3194+
}
3195+
if (curl_easy_getinfo(ch->cp, CURLINFO_SCHEME, &s_code) == CURLE_OK) {
3196+
CAAS("scheme", s_code);
3197+
}
3198+
#endif
3199+
#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
3200+
if (curl_easy_getinfo(ch->cp, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &co) == CURLE_OK) {
3201+
CAAL("content_length_download", co);
3202+
}
3203+
if (curl_easy_getinfo(ch->cp, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &co) == CURLE_OK) {
3204+
CAAL("content_length_upload", co);
3205+
}
3206+
if (curl_easy_getinfo(ch->cp, CURLINFO_SIZE_DOWNLOAD_T, &co) == CURLE_OK) {
3207+
CAAL("size_download", co);
3208+
}
3209+
if (curl_easy_getinfo(ch->cp, CURLINFO_SIZE_UPLOAD_T, &co) == CURLE_OK) {
3210+
CAAL("size_upload", co);
3211+
}
3212+
if (curl_easy_getinfo(ch->cp, CURLINFO_SPEED_DOWNLOAD_T, &co) == CURLE_OK) {
3213+
CAAL("speed_download", co);
3214+
}
3215+
if (curl_easy_getinfo(ch->cp, CURLINFO_SPEED_UPLOAD_T, &co) == CURLE_OK) {
3216+
CAAL("speed_upload", co);
3217+
}
30793218
#endif
30803219
if (ch->header.str) {
30813220
CAASTR("request_header", ch->header.str);
@@ -3153,6 +3292,18 @@ PHP_FUNCTION(curl_getinfo)
31533292
}
31543293
break;
31553294
}
3295+
#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
3296+
case CURLINFO_OFF_T:
3297+
{
3298+
curl_off_t c_off;
3299+
if (curl_easy_getinfo(ch->cp, option, &c_off) == CURLE_OK) {
3300+
RETURN_LONG((long) c_off);
3301+
} else {
3302+
RETURN_FALSE;
3303+
}
3304+
break;
3305+
}
3306+
#endif
31563307
default:
31573308
RETURN_FALSE;
31583309
}

ext/curl/tests/check_win_config.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ GSSAPI => No
4545
KERBEROS5 => Yes
4646
UNIX_SOCKETS => No
4747
PSL => No
48+
HTTPS_PROXY => Yes
4849
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
4950
Host => %s-pc-win32
5051
SSL Version => OpenSSL/%s

ext/curl/tests/curl_basic_023.phpt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
--TEST--
2+
Test curl_getinfo() function with CURLINFO_HTTP_VERSION parameter
3+
--SKIPIF--
4+
<?php if (!extension_loaded("curl")) print "skip";
5+
$curl_version = curl_version();
6+
if ($curl_version['version_number'] < 0x073200) {
7+
exit("skip: test works only with curl >= 7.50.0");
8+
}
9+
?>
10+
--FILE--
11+
<?php
12+
13+
include 'server.inc';
14+
15+
$ch = curl_init();
16+
var_dump(0 === curl_getinfo($ch, CURLINFO_HTTP_VERSION));
17+
18+
$host = curl_cli_server_start();
19+
20+
$url = "{$host}/get.php?test=";
21+
curl_setopt($ch, CURLOPT_URL, $url);
22+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
23+
curl_exec($ch);
24+
var_dump(CURL_HTTP_VERSION_1_1 === curl_getinfo($ch, CURLINFO_HTTP_VERSION));
25+
curl_close($ch);
26+
?>
27+
===DONE===
28+
--EXPECT--
29+
bool(true)
30+
bool(true)
31+
===DONE===

ext/curl/tests/curl_basic_024.phpt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
--TEST--
2+
Test curl_getinfo() function with CURLINFO_* from curl >= 7.52.0
3+
--SKIPIF--
4+
<?php if (!extension_loaded("curl")) print "skip";
5+
$curl_version = curl_version();
6+
if ($curl_version['version_number'] < 0x073400) {
7+
exit("skip: test works only with curl >= 7.52.0");
8+
}
9+
?>
10+
--FILE--
11+
<?php
12+
13+
include 'server.inc';
14+
15+
$ch = curl_init();
16+
$host = curl_cli_server_start();
17+
18+
$url = "{$host}/get.php?test=";
19+
curl_setopt($ch, CURLOPT_URL, $url);
20+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
21+
curl_exec($ch);
22+
var_dump(CURLPROTO_HTTP === curl_getinfo($ch, CURLINFO_PROTOCOL));
23+
var_dump(0 === curl_getinfo($ch, CURLINFO_PROXY_SSL_VERIFYRESULT));
24+
var_dump(curl_getinfo($ch, CURLINFO_SCHEME));
25+
curl_close($ch);
26+
?>
27+
===DONE===
28+
--EXPECT--
29+
bool(true)
30+
bool(true)
31+
string(4) "HTTP"
32+
===DONE===

0 commit comments

Comments
 (0)