Expose new constants from libcurl 7.62 to 7.80

This commit is contained in:
Pierrick Charron 2022-06-05 14:50:23 -04:00
parent 1bcd8d394a
commit cec20f615d
No known key found for this signature in database
GPG Key ID: 286AF1F9897469DC
4 changed files with 261 additions and 1 deletions

3
NEWS
View File

@ -10,6 +10,9 @@ PHP NEWS
. Fixed bug GH-7821 and GH-8418 (Allow arbitrary const expressions in backed
enums). (ilutov)
- Curl:
. Added new constants from cURL 7.62 to 7.80. (Pierrick)
- MBString:
. Backwards-compatible mappings for 0x5C/0x7E in Shift-JIS are restored,
after they had been changed in 8.1.0. (Alex Dowad)

View File

@ -76,6 +76,7 @@ PHP 8.2 UPGRADE NOTES
- Curl:
. Added CURLINFO_EFFECTIVE_METHOD option and returning the effective
HTTP method in curl_getinfo() return value.
. Exposed multiple new constants from libcurl 7.62 to 7.80.
- OCI8:
. Added an oci8.prefetch_lob_size directive and oci_set_prefetch_lob()
@ -240,8 +241,83 @@ PHP 8.2 UPGRADE NOTES
. LOCALE_NEUTRAL
- Curl:
. CURLOPT_XFERINFOFUNCTION
. CURLALTSVC_H1 (libcurl >= 7.64.1)
. CURLALTSVC_H2 (libcurl >= 7.64.1)
. CURLALTSVC_H3 (libcurl >= 7.64.1)
. CURLALTSVC_READONLYFILE (libcurl >= 7.64.1)
. CURLAUTH_AWS_SIGV4 (libcurl >= 7.75.0)
. CURLE_PROXY (libcurl >= 7.73.0)
. CURLFTPMETHOD_DEFAULT
. CURLHSTS_ENABLE (libcurl >= 7.74.0)
. CURLHSTS_READONLYFILE (libcurl >= 7.74.0)
. CURLINFO_PROXY_ERROR (libcurl >= 7.73.0)
. CURLINFO_REFERER (libcurl >= 7.76.0)
. CURLINFO_RETRY_AFTER (libcurl >= 7.66.0)
. CURLMOPT_MAX_CONCURRENT_STREAMS (libcurl >= 7.67.0)
. CURLOPT_ALTSVC_CTRL (libcurl >= 7.64.1)
. CURLOPT_ALTSVC (libcurl >= 7.64.1)
. CURLOPT_AWS_SIGV4 (libcurl >= 7.75.0)
. CURLOPT_CAINFO_BLOB (libcurl >= 7.77.0)
. CURLOPT_DOH_SSL_VERIFYHOST (libcurl >= 7.76.0)
. CURLOPT_DOH_SSL_VERIFYPEER (libcurl >= 7.76.0)
. CURLOPT_DOH_SSL_VERIFYSTATUS (libcurl >= 7.76.0)
. CURLOPT_HSTS_CTRL (libcurl >= 7.74.0)
. CURLOPT_HSTS (libcurl >= 7.74.0)
. CURLOPT_MAIL_RCPT_ALLLOWFAILS (libcurl >= 7.69.0)
. CURLOPT_MAXAGE_CONN (libcurl >= 7.65.0)
. CURLOPT_MAXFILESIZE_LARGE
. CURLOPT_MAXLIFETIME_CONN (libcurl >= 7.80.0)
. CURLOPT_PROXY_CAINFO_BLOB (libcurl >= 7.77.0)
. CURLOPT_SASL_AUTHZID (libcurl >= 7.66.0)
. CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 (libcurl >= 7.80.0)
. CURLOPT_SSL_EC_CURVES (libcurl >= 7.73.0)
. CURLOPT_UPKEEP_INTERVAL_MS (libcurl >= 7.62.0)
. CURLOPT_UPLOAD_BUFFERSIZE (libcurl >= 7.62.0)
. CURLOPT_XFERINFOFUNCTION (libcurl >= 7.32.0)
. CURLPROTO_MQTT (libcurl >= 7.71.0)
. CURLPX_BAD_ADDRESS_TYPE (libcurl >= 7.73.0)
. CURLPX_BAD_VERSION (libcurl >= 7.73.0)
. CURLPX_CLOSED (libcurl >= 7.73.0)
. CURLPX_GSSAPI (libcurl >= 7.73.0)
. CURLPX_GSSAPI_PERMSG (libcurl >= 7.73.0)
. CURLPX_GSSAPI_PROTECTION (libcurl >= 7.73.0)
. CURLPX_IDENTD_DIFFER (libcurl >= 7.73.0)
. CURLPX_IDENTD (libcurl >= 7.73.0)
. CURLPX_LONG_HOSTNAME (libcurl >= 7.73.0)
. CURLPX_LONG_PASSWD (libcurl >= 7.73.0)
. CURLPX_LONG_USER (libcurl >= 7.73.0)
. CURLPX_NO_AUTH (libcurl >= 7.73.0)
. CURLPX_OK (libcurl >= 7.73.0)
. CURLPX_RECV_ADDRESS (libcurl >= 7.73.0)
. CURLPX_RECV_AUTH (libcurl >= 7.73.0)
. CURLPX_RECV_CONNECT (libcurl >= 7.73.0)
. CURLPX_RECV_REQACK (libcurl >= 7.73.0)
. CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED (libcurl >= 7.73.0)
. CURLPX_REPLY_COMMAND_NOT_SUPPORTED (libcurl >= 7.73.0)
. CURLPX_REPLY_CONNECTION_REFUSED (libcurl >= 7.73.0)
. CURLPX_REPLY_GENERAL_SERVER_FAILURE (libcurl >= 7.73.0)
. CURLPX_REPLY_HOST_UNREACHABLE (libcurl >= 7.73.0)
. CURLPX_REPLY_NETWORK_UNREACHABLE (libcurl >= 7.73.0)
. CURLPX_REPLY_NOT_ALLOWED (libcurl >= 7.73.0)
. CURLPX_REPLY_TTL_EXPIRED (libcurl >= 7.73.0)
. CURLPX_REPLY_UNASSIGNED (libcurl >= 7.73.0)
. CURLPX_REQUEST_FAILED (libcurl >= 7.73.0)
. CURLPX_RESOLVE_HOST (libcurl >= 7.73.0)
. CURLPX_SEND_AUTH (libcurl >= 7.73.0)
. CURLPX_SEND_CONNECT (libcurl >= 7.73.0)
. CURLPX_SEND_REQUEST (libcurl >= 7.73.0)
. CURLPX_UNKNOWN_FAIL (libcurl >= 7.73.0)
. CURLPX_UNKNOWN_MODE (libcurl >= 7.73.0)
. CURLPX_USER_REJECTED (libcurl >= 7.73.0)
. CURLSSLOPT_AUTO_CLIENT_CERT (libcurl >= 7.77.0)
. CURLSSLOPT_NATIVE_CA (libcurl >= 7.71.0)
. CURLSSLOPT_NO_PARTIALCHAIN (libcurl >= 7.68.0)
. CURLSSLOPT_REVOKE_BEST_EFFORT (libcurl >= 7.70.0)
. CURL_VERSION_GSASL (libcurl >= 7.76.0)
. CURL_VERSION_HSTS (libcurl >= 7.74.0)
. CURL_VERSION_HTTP3 (libcurl >= 7.66.0)
. CURL_VERSION_UNICODE (libcurl >= 7.72.0)
. CURL_VERSION_ZSTD (libcurl >= 7.72.0)
- Sockets:
. SO_INCOMING_CPU

View File

@ -295,6 +295,22 @@ PHP_MINFO_FUNCTION(curl)
#endif
#if LIBCURL_VERSION_NUM >= 0x073900 /* 7.57.0 */
{"BROTLI", CURL_VERSION_BROTLI},
#endif
#if LIBCURL_VERSION_NUM >= 0x074001 /* 7.64.1 */
{"ALTSVC", CURL_VERSION_ALTSVC},
#endif
#if LIBCURL_VERSION_NUM >= 0x074200 /* 7.66.0 */
{"HTTP3", CURL_VERSION_HTTP3},
#endif
#if LIBCURL_VERSION_NUM >= 0x074800 /* 7.72.0 */
{"UNICODE", CURL_VERSION_UNICODE},
{"ZSTD", CURL_VERSION_ZSTD},
#endif
#if LIBCURL_VERSION_NUM >= 0x074a00 /* 7.74.0 */
{"HSTS", CURL_VERSION_HSTS},
#endif
#if LIBCURL_VERSION_NUM >= 0x074c00 /* 7.76.0 */
{"GSASL", CURL_VERSION_GSASL},
#endif
{NULL, 0}
};
@ -703,6 +719,7 @@ PHP_MINIT_FUNCTION(curl)
REGISTER_CURL_CONSTANT(CURLOPT_LOCALPORTRANGE);
/* Available since 7.15.3 */
REGISTER_CURL_CONSTANT(CURLFTPMETHOD_DEFAULT);
REGISTER_CURL_CONSTANT(CURLFTPMETHOD_MULTICWD);
REGISTER_CURL_CONSTANT(CURLFTPMETHOD_NOCWD);
REGISTER_CURL_CONSTANT(CURLFTPMETHOD_SINGLECWD);
@ -1151,6 +1168,8 @@ PHP_MINIT_FUNCTION(curl)
#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */
REGISTER_CURL_CONSTANT(CURLOPT_DOH_URL);
REGISTER_CURL_CONSTANT(CURLOPT_UPKEEP_INTERVAL_MS);
REGISTER_CURL_CONSTANT(CURLOPT_UPLOAD_BUFFERSIZE);
#endif
#if LIBCURL_VERSION_NUM >= 0x074000 /* Available since 7.64.0 */
@ -1158,9 +1177,41 @@ PHP_MINIT_FUNCTION(curl)
#endif
#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */
REGISTER_CURL_CONSTANT(CURLALTSVC_H1);
REGISTER_CURL_CONSTANT(CURLALTSVC_H2);
REGISTER_CURL_CONSTANT(CURLALTSVC_H3);
REGISTER_CURL_CONSTANT(CURLALTSVC_READONLYFILE);
REGISTER_CURL_CONSTANT(CURLOPT_ALTSVC);
REGISTER_CURL_CONSTANT(CURLOPT_ALTSVC_CTRL);
REGISTER_CURL_CONSTANT(CURL_VERSION_ALTSVC);
#endif
#if LIBCURL_VERSION_NUM >= 0x074100 /* Available since 7.65.0 */
REGISTER_CURL_CONSTANT(CURLOPT_MAXAGE_CONN);
#endif
#if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */
REGISTER_CURL_CONSTANT(CURLOPT_SASL_AUTHZID);
REGISTER_CURL_CONSTANT(CURL_VERSION_HTTP3);
REGISTER_CURL_CONSTANT(CURLINFO_RETRY_AFTER);
#endif
#if LIBCURL_VERSION_NUM >= 0x074300 /* Available since 7.67.0 */
REGISTER_CURL_CONSTANT(CURLMOPT_MAX_CONCURRENT_STREAMS);
#endif
#if LIBCURL_VERSION_NUM >= 0x074400 /* Available since 7.68.0 */
REGISTER_CURL_CONSTANT(CURLSSLOPT_NO_PARTIALCHAIN);
#endif
#if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */
REGISTER_CURL_CONSTANT(CURLOPT_MAIL_RCPT_ALLLOWFAILS);
#endif
#if LIBCURL_VERSION_NUM >= 0x074600 /* Available since 7.70.0 */
REGISTER_CURL_CONSTANT(CURLSSLOPT_REVOKE_BEST_EFFORT);
#endif
#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */
REGISTER_CURL_CONSTANT(CURLOPT_ISSUERCERT_BLOB);
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_ISSUERCERT);
@ -1169,6 +1220,87 @@ PHP_MINIT_FUNCTION(curl)
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEY_BLOB);
REGISTER_CURL_CONSTANT(CURLOPT_SSLCERT_BLOB);
REGISTER_CURL_CONSTANT(CURLOPT_SSLKEY_BLOB);
REGISTER_CURL_CONSTANT(CURLPROTO_MQTT);
REGISTER_CURL_CONSTANT(CURLSSLOPT_NATIVE_CA);
#endif
#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */
REGISTER_CURL_CONSTANT(CURL_VERSION_UNICODE);
REGISTER_CURL_CONSTANT(CURL_VERSION_ZSTD);
#endif
#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */
REGISTER_CURL_CONSTANT(CURLE_PROXY);
REGISTER_CURL_CONSTANT(CURLINFO_PROXY_ERROR);
REGISTER_CURL_CONSTANT(CURLOPT_SSL_EC_CURVES);
REGISTER_CURL_CONSTANT(CURLPX_BAD_ADDRESS_TYPE);
REGISTER_CURL_CONSTANT(CURLPX_BAD_VERSION);
REGISTER_CURL_CONSTANT(CURLPX_CLOSED);
REGISTER_CURL_CONSTANT(CURLPX_GSSAPI);
REGISTER_CURL_CONSTANT(CURLPX_GSSAPI_PERMSG);
REGISTER_CURL_CONSTANT(CURLPX_GSSAPI_PROTECTION);
REGISTER_CURL_CONSTANT(CURLPX_IDENTD);
REGISTER_CURL_CONSTANT(CURLPX_IDENTD_DIFFER);
REGISTER_CURL_CONSTANT(CURLPX_LONG_HOSTNAME);
REGISTER_CURL_CONSTANT(CURLPX_LONG_PASSWD);
REGISTER_CURL_CONSTANT(CURLPX_LONG_USER);
REGISTER_CURL_CONSTANT(CURLPX_NO_AUTH);
REGISTER_CURL_CONSTANT(CURLPX_OK);
REGISTER_CURL_CONSTANT(CURLPX_RECV_ADDRESS);
REGISTER_CURL_CONSTANT(CURLPX_RECV_AUTH);
REGISTER_CURL_CONSTANT(CURLPX_RECV_CONNECT);
REGISTER_CURL_CONSTANT(CURLPX_RECV_REQACK);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_COMMAND_NOT_SUPPORTED);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_CONNECTION_REFUSED);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_GENERAL_SERVER_FAILURE);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_HOST_UNREACHABLE);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_NETWORK_UNREACHABLE);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_NOT_ALLOWED);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_TTL_EXPIRED);
REGISTER_CURL_CONSTANT(CURLPX_REPLY_UNASSIGNED);
REGISTER_CURL_CONSTANT(CURLPX_REQUEST_FAILED);
REGISTER_CURL_CONSTANT(CURLPX_RESOLVE_HOST);
REGISTER_CURL_CONSTANT(CURLPX_SEND_AUTH);
REGISTER_CURL_CONSTANT(CURLPX_SEND_CONNECT);
REGISTER_CURL_CONSTANT(CURLPX_SEND_REQUEST);
REGISTER_CURL_CONSTANT(CURLPX_UNKNOWN_FAIL);
REGISTER_CURL_CONSTANT(CURLPX_UNKNOWN_MODE);
REGISTER_CURL_CONSTANT(CURLPX_USER_REJECTED);
#endif
#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */
REGISTER_CURL_CONSTANT(CURLHSTS_ENABLE);
REGISTER_CURL_CONSTANT(CURLHSTS_READONLYFILE);
REGISTER_CURL_CONSTANT(CURLOPT_HSTS);
REGISTER_CURL_CONSTANT(CURLOPT_HSTS_CTRL);
REGISTER_CURL_CONSTANT(CURL_VERSION_HSTS);
#endif
#if LIBCURL_VERSION_NUM >= 0x074b00 /* Available since 7.75.0 */
REGISTER_CURL_CONSTANT(CURLAUTH_AWS_SIGV4);
REGISTER_CURL_CONSTANT(CURLOPT_AWS_SIGV4);
#endif
#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */
REGISTER_CURL_CONSTANT(CURLINFO_REFERER);
REGISTER_CURL_CONSTANT(CURLOPT_DOH_SSL_VERIFYHOST);
REGISTER_CURL_CONSTANT(CURLOPT_DOH_SSL_VERIFYPEER);
REGISTER_CURL_CONSTANT(CURLOPT_DOH_SSL_VERIFYSTATUS);
REGISTER_CURL_CONSTANT(CURL_VERSION_GSASL);
#endif
#if LIBCURL_VERSION_NUM >= 0x074d00 /* Available since 7.77.0 */
REGISTER_CURL_CONSTANT(CURLOPT_CAINFO_BLOB);
REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAINFO_BLOB);
REGISTER_CURL_CONSTANT(CURLSSLOPT_AUTO_CLIENT_CERT);
#endif
#if LIBCURL_VERSION_NUM >= 0x075000 /* Available since 7.80.0 */
REGISTER_CURL_CONSTANT(CURLOPT_MAXLIFETIME_CONN);
REGISTER_CURL_CONSTANT(CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256);
#endif
REGISTER_CURL_CONSTANT(CURLOPT_SAFE_UPLOAD);
@ -2545,8 +2677,32 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue
#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */
case CURLOPT_DISALLOW_USERNAME_IN_URL:
#endif
#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */
case CURLOPT_UPKEEP_INTERVAL_MS:
case CURLOPT_UPLOAD_BUFFERSIZE:
#endif
#if LIBCURL_VERSION_NUM >= 0x074000 /* Available since 7.64.0 */
case CURLOPT_HTTP09_ALLOWED:
#endif
#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */
case CURLOPT_ALTSVC_CTRL:
#endif
#if LIBCURL_VERSION_NUM >= 0x074100 /* Available since 7.65.0 */
case CURLOPT_MAXAGE_CONN:
#endif
#if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */
case CURLOPT_MAIL_RCPT_ALLLOWFAILS:
#endif
#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */
case CURLOPT_HSTS_CTRL:
#endif
#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */
case CURLOPT_DOH_SSL_VERIFYHOST:
case CURLOPT_DOH_SSL_VERIFYPEER:
case CURLOPT_DOH_SSL_VERIFYSTATUS:
#endif
#if LIBCURL_VERSION_NUM >= 0x075000 /* Available since 7.80.0 */
case CURLOPT_MAXLIFETIME_CONN:
#endif
lval = zval_get_long(zvalue);
if ((option == CURLOPT_PROTOCOLS || option == CURLOPT_REDIR_PROTOCOLS) &&
@ -2644,8 +2800,23 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue
case CURLOPT_PROXY_TLS13_CIPHERS:
case CURLOPT_TLS13_CIPHERS:
#endif
#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */
case CURLOPT_ALTSVC:
#endif
#if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */
case CURLOPT_SASL_AUTHZID:
#endif
#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */
case CURLOPT_PROXY_ISSUERCERT:
#endif
#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */
case CURLOPT_SSL_EC_CURVES:
#endif
#if LIBCURL_VERSION_NUM >= 0x074b00 /* Available since 7.75.0 */
case CURLOPT_AWS_SIGV4:
#endif
#if LIBCURL_VERSION_NUM >= 0x075000 /* Available since 7.80.0 */
case CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256:
#endif
{
zend_string *tmp_str;
@ -2672,6 +2843,9 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue
#endif
#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */
case CURLOPT_DOH_URL:
#endif
#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */
case CURLOPT_HSTS:
#endif
case CURLOPT_KRBLEVEL:
{
@ -3072,6 +3246,10 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue
case CURLOPT_PROXY_SSLKEY_BLOB:
case CURLOPT_SSLCERT_BLOB:
case CURLOPT_SSLKEY_BLOB:
#if LIBCURL_VERSION_NUM >= 0x074d00 /* Available since 7.77.0 */
case CURLOPT_CAINFO_BLOB:
case CURLOPT_PROXY_CAINFO_BLOB:
#endif
{
zend_string *tmp_str;
zend_string *str = zval_get_tmp_string(zvalue, &tmp_str);

View File

@ -441,6 +441,9 @@ static bool _php_curl_multi_setopt(php_curlm *mh, zend_long option, zval *zvalue
case CURLMOPT_MAX_HOST_CONNECTIONS:
case CURLMOPT_MAX_PIPELINE_LENGTH:
case CURLMOPT_MAX_TOTAL_CONNECTIONS:
#endif
#if LIBCURL_VERSION_NUM >= 0x074300 /* Available since 7.67.0 */
case CURLMOPT_MAX_CONCURRENT_STREAMS:
#endif
{
zend_long lval = zval_get_long(zvalue);