From 700e3add58aaa58d7dcc8776c1b388ee282535a1 Mon Sep 17 00:00:00 2001 From: Ayesh Karunaratne Date: Sat, 27 Jul 2024 16:48:39 +0700 Subject: [PATCH 1/2] ext/curl: Add `CURLOPT_SERVER_RESPONSE_TIMEOUT` Adds `CURLOPT_SERVER_RESPONSE_TIMEOUT`, available since Curl 7.20.0. `CURLOPT_SERVER_RESPONSE_TIMEOUT` holds the same value as and it meant to replace `CURLOPT_FTP_RESPONSE_TIMEOUT`. See: - https://curl.se/libcurl/c/CURLOPT_SERVER_RESPONSE_TIMEOUT.html - https://curl.se/libcurl/c/CURLOPT_FTP_RESPONSE_TIMEOUT.html --- NEWS | 4 ++++ UPGRADING | 3 +++ ext/curl/curl.stub.php | 8 +++++++- ext/curl/curl_arginfo.h | 5 +++-- ext/curl/interface.c | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 12a0a33e6d3d..e1450ac64c30 100644 --- a/NEWS +++ b/NEWS @@ -38,6 +38,10 @@ PHP NEWS EAI_SYSTEM not found). (nielsdos) . Implemented asymmetric visibility for properties. (ilutov) +- Curl: + . Added CURLOPT_SERVER_RESPONSE_TIMEOUT, which was formerly known as + CURLOPT_FTP_RESPONSE_TIMEOUT. (Ayesh Karunaratne) + - Date: . Fixed bug GH-13773 (DatePeriod not taking into account microseconds for end date). (Mark Bennewitz, Derick) diff --git a/UPGRADING b/UPGRADING index 048049b96642..890d33b05aa7 100644 --- a/UPGRADING +++ b/UPGRADING @@ -292,6 +292,8 @@ PHP 8.4 UPGRADE NOTES supported (true) or not (false). . Added CURL_HTTP_VERSION_3 and CURL_HTTP_VERSION_3ONLY constants (available since libcurl 7.66 and 7.88) as available options for CURLOPT_HTTP_VERSION. + . Added CURLOPT_SERVER_RESPONSE_TIMEOUT, which was formerly known as + CURLOPT_FTP_RESPONSE_TIMEOUT. Both constants hold the same value. - Date: . Added static methods @@ -996,6 +998,7 @@ PHP 8.4 UPGRADE NOTES . CURL_HTTP_VERSION_3. . CURL_HTTP_VERSION_3ONLY. . CURL_TCP_KEEPCNT + . CURLOPT_SERVER_RESPONSE_TIMEOUT. - Intl: . The IntlDateFormatter class exposes now the new PATTERN constant diff --git a/ext/curl/curl.stub.php b/ext/curl/curl.stub.php index c7eba7394843..61dba973fb77 100644 --- a/ext/curl/curl.stub.php +++ b/ext/curl/curl.stub.php @@ -1291,9 +1291,15 @@ const CURLINFO_PROXYAUTH_AVAIL = UNKNOWN; /** * @var int - * @cvalue CURLOPT_FTP_RESPONSE_TIMEOUT + * @cvalue CURLOPT_SERVER_RESPONSE_TIMEOUT + * @alias CURLOPT_SERVER_RESPONSE_TIMEOUT */ const CURLOPT_FTP_RESPONSE_TIMEOUT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SERVER_RESPONSE_TIMEOUT + */ +const CURLOPT_SERVER_RESPONSE_TIMEOUT = UNKNOWN; /** * @var int * @cvalue CURLOPT_IPRESOLVE diff --git a/ext/curl/curl_arginfo.h b/ext/curl/curl_arginfo.h index f3f13ae3b4ca..59680e55afe6 100644 --- a/ext/curl/curl_arginfo.h +++ b/ext/curl/curl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 3a5bd4e561f08f0dbd26383132a771acc8192fff */ + * Stub hash: df522ae7fc55632c34db6075aa7de3360b18b9ab */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0) ZEND_ARG_OBJ_INFO(0, handle, CurlHandle, 0) @@ -484,7 +484,8 @@ static void register_curl_symbols(int module_number) REGISTER_LONG_CONSTANT("CURLINFO_HTTPAUTH_AVAIL", CURLINFO_HTTPAUTH_AVAIL, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLINFO_RESPONSE_CODE", CURLINFO_RESPONSE_CODE, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLINFO_PROXYAUTH_AVAIL", CURLINFO_PROXYAUTH_AVAIL, CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CURLOPT_FTP_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT, 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); 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); diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 4697f468098d..ba3c9667d559 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1695,7 +1695,7 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue case CURLOPT_HTTPAUTH: case CURLOPT_FTP_CREATE_MISSING_DIRS: case CURLOPT_PROXYAUTH: - case CURLOPT_FTP_RESPONSE_TIMEOUT: + case CURLOPT_SERVER_RESPONSE_TIMEOUT: case CURLOPT_IPRESOLVE: case CURLOPT_MAXFILESIZE: case CURLOPT_TCP_NODELAY: From dc4eb68a81033dcac96b38f95b11c7f3aafadc2b Mon Sep 17 00:00:00 2001 From: Ayesh Karunaratne Date: Sat, 27 Jul 2024 19:03:48 +0700 Subject: [PATCH 2/2] ext/curl: Update stub `CURLOPT_ENCODING` `@cvalue` to `CURLOPT_ACCEPT_ENCODING` In Curl 7.21.6, the `CURLOPT_ENCODING` constant was renamed to `CURLOPT_ACCEPT_ENCODING`. `CURLOPT_ENCODING` is deprecated from Curl 7.21.6. It still provides `CURLOPT_ENCODING` from `CURLOPT_ACCEPT_ENCODING` for backward compatibility. However, now that PHP requires Curl 7.61, we can safely use the new `CURLOPT_ACCEPT_ENCODING` constant. --- ext/curl/curl.stub.php | 3 ++- ext/curl/curl_arginfo.h | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ext/curl/curl.stub.php b/ext/curl/curl.stub.php index 61dba973fb77..e6245aab073e 100644 --- a/ext/curl/curl.stub.php +++ b/ext/curl/curl.stub.php @@ -84,7 +84,8 @@ const CURLOPT_EGDSOCKET = UNKNOWN; /** * @var int - * @cvalue CURLOPT_ENCODING + * @cvalue CURLOPT_ACCEPT_ENCODING + * @alias CURLOPT_ACCEPT_ENCODING */ const CURLOPT_ENCODING = UNKNOWN; /** diff --git a/ext/curl/curl_arginfo.h b/ext/curl/curl_arginfo.h index 59680e55afe6..6c444ebbf744 100644 --- a/ext/curl/curl_arginfo.h +++ b/ext/curl/curl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: df522ae7fc55632c34db6075aa7de3360b18b9ab */ + * Stub hash: 5aa5f230880f8373ef8ec378f7e600247332136e */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0) ZEND_ARG_OBJ_INFO(0, handle, CurlHandle, 0) @@ -242,7 +242,7 @@ static void register_curl_symbols(int module_number) 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); REGISTER_LONG_CONSTANT("CURLOPT_EGDSOCKET", CURLOPT_EGDSOCKET, CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CURLOPT_ENCODING", CURLOPT_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_ENCODING", CURLOPT_ACCEPT_ENCODING, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_FAILONERROR", CURLOPT_FAILONERROR, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_FILE", CURLOPT_FILE, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CURLOPT_FILETIME", CURLOPT_FILETIME, CONST_PERSISTENT);