diff --git a/UPGRADING b/UPGRADING index 875e05554566..3fc692ac9ac0 100644 --- a/UPGRADING +++ b/UPGRADING @@ -74,6 +74,8 @@ PHP 8.7 UPGRADE NOTES - Curl: . Multiple files can now be uploaded with the same field name by passing an array of CURLFile or CURLStringFile objects to CURLOPT_POSTFIELDS. + . Support for upstream options CURLOPT_ECH, CURLOPT_HAPROXY_CLIENT_IP, and + CURLOPT_SERVER_RESPONSE_TIMEOUT_MS. - Intl: . Added IntlRelativeDateTimeFormatter to format relative date and time offsets @@ -165,6 +167,12 @@ PHP 8.7 UPGRADE NOTES 10. New Global Constants ======================================== +- Curl: + . New options: CURLOPT_ECH, CURLOPT_HAPROXY_CLIENT_IP, + CURLOPT_SERVER_RESPONSE_TIMEOUT_MS. + . CURLOPT_MAIL_RCPT_ALLOWFAILS is the correctly spelled alternative to + CURLOPT_MAIL_RCPT_ALLLOWFAILS. + ======================================== 11. Changes to INI File Handling ======================================== diff --git a/ext/curl/curl.stub.php b/ext/curl/curl.stub.php index 6953f0e97cbc..bac8694da631 100644 --- a/ext/curl/curl.stub.php +++ b/ext/curl/curl.stub.php @@ -77,6 +77,13 @@ * @cvalue CURLOPT_DNS_USE_GLOBAL_CACHE */ const CURLOPT_DNS_USE_GLOBAL_CACHE = UNKNOWN; +#if LIBCURL_VERSION_NUM >= 0x080800 /* Available since 8.8.0 */ +/** + * @var int + * @cvalue CURLOPT_ECH + */ +const CURLOPT_ECH = UNKNOWN; +#endif /** * @var int * @cvalue CURLOPT_EGDSOCKET @@ -143,6 +150,13 @@ * @cvalue CURLOPT_FTP_USE_EPSV */ const CURLOPT_FTP_USE_EPSV = UNKNOWN; +#if LIBCURL_VERSION_NUM >= 0x080200 /* Available since 8.2.0 */ +/** + * @var int + * @cvalue CURLOPT_HAPROXY_CLIENT_IP + */ +const CURLOPT_HAPROXY_CLIENT_IP = UNKNOWN; +#endif /** * @var int * @cvalue CURLOPT_HEADER @@ -1383,6 +1397,13 @@ * @cvalue CURLOPT_SERVER_RESPONSE_TIMEOUT */ const CURLOPT_SERVER_RESPONSE_TIMEOUT = UNKNOWN; +#if LIBCURL_VERSION_NUM >= 0x080600 /* Available since 8.6.0 */ +/** + * @var int + * @cvalue CURLOPT_SERVER_RESPONSE_TIMEOUT_MS + */ +const CURLOPT_SERVER_RESPONSE_TIMEOUT_MS = UNKNOWN; +#endif /** * @var int * @cvalue CURLOPT_IPRESOLVE @@ -3279,7 +3300,12 @@ #if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */ /** * @var int - * @cvalue CURLOPT_MAIL_RCPT_ALLLOWFAILS + * @cvalue CURLOPT_MAIL_RCPT_ALLOWFAILS + */ +const CURLOPT_MAIL_RCPT_ALLOWFAILS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAIL_RCPT_ALLOWFAILS */ const CURLOPT_MAIL_RCPT_ALLLOWFAILS = UNKNOWN; #endif diff --git a/ext/curl/curl_arginfo.h b/ext/curl/curl_arginfo.h index c38d581cb3cd..bf47f682b1b2 100644 --- a/ext/curl/curl_arginfo.h +++ b/ext/curl/curl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit curl.stub.php instead. - * Stub hash: 5da31d6790f9db408cac4aed3f81f7affb2849a6 */ + * Stub hash: 74051be5006c0e0d66dced8f60f2fa4128ecad48 */ #include "zend_attributes.h" #include "zend_constants.h" @@ -244,6 +244,9 @@ static void register_curl_symbols(int module_number) REGISTER_LONG_CONSTANT("CURLOPT_CUSTOMREQUEST", CURLOPT_CUSTOMREQUEST, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_DNS_CACHE_TIMEOUT", CURLOPT_DNS_CACHE_TIMEOUT, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_DNS_USE_GLOBAL_CACHE", CURLOPT_DNS_USE_GLOBAL_CACHE, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x080800 /* Available since 8.8.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_ECH", CURLOPT_ECH, CONST_PERSISTENT); +#endif REGISTER_LONG_CONSTANT("CURLOPT_EGDSOCKET", CURLOPT_EGDSOCKET, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_ENCODING", CURLOPT_ACCEPT_ENCODING, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_FAILONERROR", CURLOPT_FAILONERROR, CONST_PERSISTENT); @@ -257,6 +260,9 @@ static void register_curl_symbols(int module_number) REGISTER_LONG_CONSTANT("CURLOPT_FTPPORT", CURLOPT_FTPPORT, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_FTP_USE_EPRT", CURLOPT_FTP_USE_EPRT, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_FTP_USE_EPSV", CURLOPT_FTP_USE_EPSV, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x080200 /* Available since 8.2.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_HAPROXY_CLIENT_IP", CURLOPT_HAPROXY_CLIENT_IP, CONST_PERSISTENT); +#endif REGISTER_LONG_CONSTANT("CURLOPT_HEADER", CURLOPT_HEADER, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_HEADERFUNCTION", CURLOPT_HEADERFUNCTION, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_HTTP200ALIASES", CURLOPT_HTTP200ALIASES, CONST_PERSISTENT); @@ -505,6 +511,9 @@ static void register_curl_symbols(int module_number) REGISTER_LONG_CONSTANT("CURLINFO_PROXYAUTH_AVAIL", CURLINFO_PROXYAUTH_AVAIL, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_FTP_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_SERVER_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x080600 /* Available since 8.6.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SERVER_RESPONSE_TIMEOUT_MS", CURLOPT_SERVER_RESPONSE_TIMEOUT_MS, CONST_PERSISTENT); +#endif REGISTER_LONG_CONSTANT("CURLOPT_IPRESOLVE", CURLOPT_IPRESOLVE, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_MAXFILESIZE", CURLOPT_MAXFILESIZE, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURL_IPRESOLVE_V4", CURL_IPRESOLVE_V4, CONST_PERSISTENT); @@ -878,7 +887,8 @@ static void register_curl_symbols(int module_number) REGISTER_LONG_CONSTANT("CURLSSLOPT_NO_PARTIALCHAIN", CURLSSLOPT_NO_PARTIALCHAIN, CONST_PERSISTENT); #endif #if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */ - REGISTER_LONG_CONSTANT("CURLOPT_MAIL_RCPT_ALLLOWFAILS", CURLOPT_MAIL_RCPT_ALLLOWFAILS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAIL_RCPT_ALLOWFAILS", CURLOPT_MAIL_RCPT_ALLOWFAILS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAIL_RCPT_ALLLOWFAILS", CURLOPT_MAIL_RCPT_ALLOWFAILS, CONST_PERSISTENT); #endif #if LIBCURL_VERSION_NUM >= 0x074600 /* Available since 7.70.0 */ REGISTER_LONG_CONSTANT("CURLSSLOPT_REVOKE_BEST_EFFORT", CURLSSLOPT_REVOKE_BEST_EFFORT, CONST_PERSISTENT); diff --git a/ext/curl/curl_private.h b/ext/curl/curl_private.h index 25cc37b6e458..f8550dc3f740 100644 --- a/ext/curl/curl_private.h +++ b/ext/curl/curl_private.h @@ -26,6 +26,10 @@ #include #include +#if LIBCURL_VERSION_NUM < 0x080200 /* Available since 8.2.0 */ +# define CURLOPT_MAIL_RCPT_ALLOWFAILS CURLOPT_MAIL_RCPT_ALLLOWFAILS +#endif + #define CURLOPT_RETURNTRANSFER 19913 #define CURLOPT_BINARYTRANSFER 19914 /* For Backward compatibility */ #define PHP_CURL_STDOUT 0 diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 94618e4bf74d..b94949b784c2 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1865,7 +1865,7 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue case CURLOPT_MAXAGE_CONN: #endif #if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */ - case CURLOPT_MAIL_RCPT_ALLLOWFAILS: + case CURLOPT_MAIL_RCPT_ALLOWFAILS: #endif #if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ case CURLOPT_HSTS_CTRL: @@ -1888,6 +1888,9 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue case CURLOPT_CA_CACHE_TIMEOUT: case CURLOPT_QUICK_EXIT: #endif +#if LIBCURL_VERSION_NUM >= 0x080600 /* Available since 8.6.0 */ + case CURLOPT_SERVER_RESPONSE_TIMEOUT_MS: +#endif #if LIBCURL_VERSION_NUM >= 0x080900 /* Available since 8.9.0 */ case CURLOPT_TCP_KEEPCNT: #endif @@ -2031,6 +2034,12 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue case CURLOPT_PASSWORD: #if LIBCURL_VERSION_NUM >= 0x080e00 /* Available since 8.14.0 */ case CURLOPT_SSL_SIGNATURE_ALGORITHMS: +#endif +#if LIBCURL_VERSION_NUM >= 0x080200 /* Available since 8.2.0 */ + case CURLOPT_HAPROXY_CLIENT_IP: +#endif +#if LIBCURL_VERSION_NUM >= 0x080800 /* Available since 8.8.0 */ + case CURLOPT_ECH: #endif { if (Z_ISNULL_P(zvalue)) {