From f6ebd7d3470ae50f8b7a84f3c2c86be1619606a7 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sun, 19 Jan 2020 17:13:23 +0100 Subject: [PATCH] Deprecate most obsolete cURL constants Over the years, libcurl has obsoleted several constants, and while these are still defined in latest libcurl versions, they might be removed anytime, and libcurl built with `CURL_NO_OLDIES` defined might not define these constants at all. Therefore we deprecate most of these obsolete constants, introduce constants which can be used to replace the deprecated ones (unless these have already been available). To no longer depend on the obsolete constants, we use the values of their replacements where possible, and use hard-coded numbers otherwise. We exempt `CURLOPT_FILE`, `CURLOPT_INFILE` and `CURLOPT_WRITEHEADER` for now, since deprecating these would be a more severe BC break, especially since only `CURLOPT_READDATA` is already available in ext/curl, but not `CURLOPT_WRITEDATA` and `CURLOPT_HEADERDATA`. --- ext/curl/interface.c | 77 +++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/ext/curl/interface.c b/ext/curl/interface.c index ab6581cbeea53..63470c7c1aa29 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -430,7 +430,7 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLOPT_DNS_CACHE_TIMEOUT); REGISTER_CURL_CONSTANT(CURLOPT_DNS_USE_GLOBAL_CACHE); REGISTER_CURL_CONSTANT(CURLOPT_EGDSOCKET); - REGISTER_CURL_CONSTANT(CURLOPT_ENCODING); + REGISTER_LONG_CONSTANT("CURLOPT_ENCODING", CURLOPT_ACCEPT_ENCODING, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLOPT_FAILONERROR); REGISTER_CURL_CONSTANT(CURLOPT_FILE); REGISTER_CURL_CONSTANT(CURLOPT_FILETIME); @@ -511,73 +511,73 @@ PHP_MINIT_FUNCTION(curl) /* */ REGISTER_CURL_CONSTANT(CURLE_ABORTED_BY_CALLBACK); - REGISTER_CURL_CONSTANT(CURLE_BAD_CALLING_ORDER); + REGISTER_LONG_CONSTANT("CURLE_BAD_CALLING_ORDER", 44, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_BAD_CONTENT_ENCODING); REGISTER_CURL_CONSTANT(CURLE_BAD_DOWNLOAD_RESUME); REGISTER_CURL_CONSTANT(CURLE_BAD_FUNCTION_ARGUMENT); - REGISTER_CURL_CONSTANT(CURLE_BAD_PASSWORD_ENTERED); + REGISTER_LONG_CONSTANT("CURLE_BAD_PASSWORD_ENTERED", 46, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_COULDNT_CONNECT); REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_HOST); REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_PROXY); REGISTER_CURL_CONSTANT(CURLE_FAILED_INIT); REGISTER_CURL_CONSTANT(CURLE_FILE_COULDNT_READ_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_ACCESS_DENIED); - REGISTER_CURL_CONSTANT(CURLE_FTP_BAD_DOWNLOAD_RESUME); + REGISTER_LONG_CONSTANT("CURLE_FTP_ACCESS_DENIED", CURLE_REMOTE_ACCESS_DENIED, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_FTP_BAD_DOWNLOAD_RESUME", CURLE_BAD_DOWNLOAD_RESUME, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_GET_HOST); - REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_RECONNECT); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_GET_SIZE); + REGISTER_LONG_CONSTANT("CURLE_FTP_CANT_RECONNECT", 16, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_GET_SIZE", 32, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_RETR_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_ASCII); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_BINARY); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_STOR_FILE); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_SET_ASCII", 29, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_SET_BINARY", CURLE_FTP_COULDNT_SET_TYPE, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_STOR_FILE", CURLE_UPLOAD_FAILED, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_USE_REST); - REGISTER_CURL_CONSTANT(CURLE_FTP_PARTIAL_FILE); + REGISTER_LONG_CONSTANT("CURLE_FTP_PARTIAL_FILE", CURLE_PARTIAL_FILE, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_FTP_PORT_FAILED); - REGISTER_CURL_CONSTANT(CURLE_FTP_QUOTE_ERROR); - REGISTER_CURL_CONSTANT(CURLE_FTP_USER_PASSWORD_INCORRECT); + REGISTER_LONG_CONSTANT("CURLE_FTP_QUOTE_ERROR", CURLE_QUOTE_ERROR, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_FTP_USER_PASSWORD_INCORRECT", 10, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_227_FORMAT); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASS_REPLY); REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASV_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_SERVER_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_USER_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR); + REGISTER_LONG_CONSTANT("CURLE_FTP_WEIRD_SERVER_REPLY", 8, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_FTP_WEIRD_USER_REPLY", 12, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_FTP_WRITE_ERROR", 20, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_FUNCTION_NOT_FOUND); REGISTER_CURL_CONSTANT(CURLE_GOT_NOTHING); - REGISTER_CURL_CONSTANT(CURLE_HTTP_NOT_FOUND); - REGISTER_CURL_CONSTANT(CURLE_HTTP_PORT_FAILED); + REGISTER_CURL_CONSTANT("CURLE_HTTP_NOT_FOUND", CURLE_HTTP_RETURNED_ERROR, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_CURL_CONSTANT("CURLE_HTTP_PORT_FAILED", CURLE_INTERFACE_FAILED, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_HTTP_POST_ERROR); - REGISTER_CURL_CONSTANT(CURLE_HTTP_RANGE_ERROR); + REGISTER_LONG_CONSTANT("CURLE_HTTP_RANGE_ERROR", CURLE_RANGE_ERROR, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_HTTP_RETURNED_ERROR); REGISTER_CURL_CONSTANT(CURLE_LDAP_CANNOT_BIND); REGISTER_CURL_CONSTANT(CURLE_LDAP_SEARCH_FAILED); - REGISTER_CURL_CONSTANT(CURLE_LIBRARY_NOT_FOUND); - REGISTER_CURL_CONSTANT(CURLE_MALFORMAT_USER); - REGISTER_CURL_CONSTANT(CURLE_OBSOLETE); + REGISTER_LONG_CONSTANT("CURLE_LIBRARY_NOT_FOUND", 40, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_MALFORMAT_USER", 24, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_OBSOLETE", 50, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_OK); REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEDOUT); - REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEOUTED); + REGISTER_LONG_CONSTANT("CURLE_OPERATION_TIMEOUTED", CURLE_OPERATION_TIMEDOUT, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_OUT_OF_MEMORY); REGISTER_CURL_CONSTANT(CURLE_PARTIAL_FILE); REGISTER_CURL_CONSTANT(CURLE_READ_ERROR); REGISTER_CURL_CONSTANT(CURLE_RECV_ERROR); REGISTER_CURL_CONSTANT(CURLE_SEND_ERROR); - REGISTER_CURL_CONSTANT(CURLE_SHARE_IN_USE); - REGISTER_CURL_CONSTANT(CURLE_SSL_CACERT); + REGISTER_LONG_CONSTANT("CURLE_SHARE_IN_USE", 57, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("CURLE_SSL_CACERT", 60, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_SSL_CERTPROBLEM); REGISTER_CURL_CONSTANT(CURLE_SSL_CIPHER); REGISTER_CURL_CONSTANT(CURLE_SSL_CONNECT_ERROR); REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_NOTFOUND); REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_SETFAILED); - REGISTER_CURL_CONSTANT(CURLE_SSL_PEER_CERTIFICATE); + REGISTER_LONG_CONSTANT("CURLE_SSL_PEER_CERTIFICATE", 60, CONST_PERSISTENT | CONST_DEPRECATED); #if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ REGISTER_CURL_CONSTANT(CURLE_SSL_PINNEDPUBKEYNOTMATCH); #endif REGISTER_CURL_CONSTANT(CURLE_TELNET_OPTION_SYNTAX); REGISTER_CURL_CONSTANT(CURLE_TOO_MANY_REDIRECTS); - REGISTER_CURL_CONSTANT(CURLE_UNKNOWN_TELNET_OPTION); + REGISTER_LONG_CONSTANT("CURLE_UNKNOWN_TELNET_OPTION", CURLE_UNKNOWN_OPTION, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_UNSUPPORTED_PROTOCOL); REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT); - REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT_USER); + REGISTER_LONG_CONSTANT("CURLE_URL_MALFORMAT_USER", CURLE_NOT_BUILT_IN, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLE_WRITE_ERROR); /* cURL info constants */ @@ -672,6 +672,9 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_VERSION_SSL); REGISTER_CURL_CONSTANT(CURL_VERSION_SSPI); + /* Available since 7.7 */ + REGISTER_CURL_CONSTANT(CURLE_REMOTE_ACCESS_DENIED); + /* Available since 7.10.6 */ REGISTER_CURL_CONSTANT(CURLOPT_HTTPAUTH); /* http authentication options */ @@ -702,7 +705,7 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_IPRESOLVE_WHATEVER); /* Available since 7.11.0 */ - REGISTER_CURL_CONSTANT(CURLE_FTP_SSL_FAILED); + REGISTER_LONG_CONSTANT("CURLE_FTP_SSL_FAILED", CURLE_USE_SSL_FAILED, CONST_PERSISTENT | CONST_DEPRECATED); REGISTER_CURL_CONSTANT(CURLFTPSSL_ALL); REGISTER_CURL_CONSTANT(CURLFTPSSL_CONTROL); REGISTER_CURL_CONSTANT(CURLFTPSSL_NONE); @@ -713,6 +716,9 @@ PHP_MINIT_FUNCTION(curl) /* Available since 7.11.2 */ REGISTER_CURL_CONSTANT(CURLOPT_TCP_NODELAY); + /* Available since 7.12.0 */ + REGISTER_CURL_CONSTANT(CURLE_INTERFACE_FAILED); + /* Available since 7.12.2 */ REGISTER_CURL_CONSTANT(CURLFTPAUTH_DEFAULT); REGISTER_CURL_CONSTANT(CURLFTPAUTH_SSL); @@ -781,6 +787,7 @@ PHP_MINIT_FUNCTION(curl) /* Available since 7.16.3 */ REGISTER_CURL_CONSTANT(CURLMOPT_MAXCONNECTS); + REGISTER_CURL_CONSTANT(CURLE_UPLOAD_FAILED); /* Available since 7.16.4 */ REGISTER_CURL_CONSTANT(CURLOPT_KRBLEVEL); @@ -791,6 +798,10 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLOPT_APPEND); REGISTER_CURL_CONSTANT(CURLOPT_DIRLISTONLY); REGISTER_CURL_CONSTANT(CURLOPT_USE_SSL); + REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_TYPE); + REGISTER_CURL_CONSTANT(CURLE_QUOTE_ERROR); + REGISTER_CURL_CONSTANT(CURLE_RANGE_ERROR); + REGISTER_CURL_CONSTANT(CURLE_USE_SSL_FAILED); /* Curl SSL Constants */ REGISTER_CURL_CONSTANT(CURLUSESSL_ALL); REGISTER_CURL_CONSTANT(CURLUSESSL_CONTROL); @@ -946,6 +957,10 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURL_TLSAUTH_SRP); REGISTER_CURL_CONSTANT(CURL_VERSION_TLSAUTH_SRP); + /* Available since 7.21.5 */ + REGISTER_CURL_CONSTANT(CURLE_UNKNOWN_OPTION); + REGISTER_CURL_CONSTANT(CURLE_NOT_BUILT_IN); + /* Available since 7.21.6 */ REGISTER_CURL_CONSTANT(CURLOPT_ACCEPT_ENCODING); REGISTER_CURL_CONSTANT(CURLOPT_TRANSFER_ENCODING); @@ -1192,6 +1207,10 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLOPT_TLS13_CIPHERS); #endif +#if LIBCURL_VERSION_NUM >= 0x073e00 /* Available since 7.62.0 */ + REGISTER_CURL_CONSTANT(CURLE_PEER_FAILED_VERIFICATION); +#endif + #if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ REGISTER_CURL_CONSTANT(CURL_VERSION_ALTSVC); #endif