summaryrefslogtreecommitdiff
path: root/ext/curl/interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/curl/interface.c')
-rw-r--r--ext/curl/interface.c153
1 files changed, 152 insertions, 1 deletions
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index 075491105a..4b635899a6 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -569,6 +569,9 @@ PHP_MINFO_FUNCTION(curl)
#if LIBCURL_VERSION_NUM >= 0x072f00 /* 7.47.0 */
{"PSL", CURL_VERSION_PSL},
#endif
+#if LIBCURL_VERSION_NUM >= 0x073400 /* 7.52.0 */
+ {"HTTPS_PROXY", CURL_VERSION_HTTPS_PROXY},
+#endif
{NULL, 0}
};
@@ -1324,8 +1327,70 @@ PHP_MINIT_FUNCTION(curl)
REGISTER_CURL_CONSTANT(CURLOPT_TCP_FASTOPEN);
#endif
+#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */
+ REGISTER_CURL_CONSTANT(CURLINFO_HTTP_VERSION);
+#endif
+
+#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */
+ REGISTER_CURL_CONSTANT(CURLE_WEIRD_SERVER_REPLY);
+ REGISTER_CURL_CONSTANT(CURLOPT_KEEP_SENDING_ON_ERROR);
+#endif
+
+#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
+ REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1_3);
+ REGISTER_CURL_CONSTANT(CURL_VERSION_HTTPS_PROXY);
+ REGISTER_CURL_CONSTANT(CURLINFO_PROTOCOL);
+ REGISTER_CURL_CONSTANT(CURLINFO_PROXY_SSL_VERIFYRESULT);
+ REGISTER_CURL_CONSTANT(CURLINFO_SCHEME);
+ REGISTER_CURL_CONSTANT(CURLOPT_PRE_PROXY);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAINFO);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAPATH);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CRLFILE);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_KEYPASSWD);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_PINNEDPUBLICKEY);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_CIPHER_LIST);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_OPTIONS);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYHOST);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYPEER);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERT);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERTTYPE);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEY);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEYTYPE);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLVERSION);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_PASSWORD);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_TYPE);
+ REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_USERNAME);
+ REGISTER_CURL_CONSTANT(CURLPROXY_HTTPS);
+#endif
+
+#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */
+ REGISTER_CURL_CONSTANT(CURL_MAX_READ_SIZE);
+ REGISTER_CURL_CONSTANT(CURLOPT_ABSTRACT_UNIX_SOCKET);
+#endif
+
+#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */
+ REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_DEFAULT);
+ REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_NONE);
+ REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_0);
+ REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_1);
+ REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_2);
+ REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_3);
+ REGISTER_CURL_CONSTANT(CURLOPT_SUPPRESS_CONNECT_HEADERS);
+#endif
+
+#if LIBCURL_VERSION_NUM >= 0x073601 /* Available since 7.54.1 */
+ REGISTER_CURL_CONSTANT(CURLAUTH_GSSAPI);
+#endif
+
#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
+ REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_DOWNLOAD_T);
+ REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_UPLOAD_T);
+ REGISTER_CURL_CONSTANT(CURLINFO_SIZE_DOWNLOAD_T);
+ REGISTER_CURL_CONSTANT(CURLINFO_SIZE_UPLOAD_T);
+ REGISTER_CURL_CONSTANT(CURLINFO_SPEED_DOWNLOAD_T);
+ REGISTER_CURL_CONSTANT(CURLINFO_SPEED_UPLOAD_T);
REGISTER_CURL_CONSTANT(CURLOPT_REQUEST_TARGET);
+ REGISTER_CURL_CONSTANT(CURLOPT_SOCKS5_AUTH);
#endif
REGISTER_CURL_CONSTANT(CURLOPT_SAFE_UPLOAD);
@@ -2187,6 +2252,22 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */
case CURLOPT_TCP_FASTOPEN:
#endif
+#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */
+ case CURLOPT_KEEP_SENDING_ON_ERROR:
+#endif
+#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
+ case CURLOPT_PROXY_SSL_OPTIONS:
+ case CURLOPT_PROXY_SSL_VERIFYHOST:
+ case CURLOPT_PROXY_SSL_VERIFYPEER:
+ case CURLOPT_PROXY_SSLVERSION:
+#endif
+#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */
+ case CURLOPT_SUPPRESS_CONNECT_HEADERS:
+#endif
+#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
+ case CURLOPT_SOCKS5_AUTH:
+#endif
+
lval = zval_get_long(zvalue);
#if LIBCURL_VERSION_NUM >= 0x071304
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) /* {{{
#if LIBCURL_VERSION_NUM >= 0x072d00 /* Available since 7.45.0 */
case CURLOPT_DEFAULT_PROTOCOL:
#endif
+#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
+ case CURLOPT_PRE_PROXY:
+ case CURLOPT_PROXY_CAINFO:
+ case CURLOPT_PROXY_CAPATH:
+ case CURLOPT_PROXY_CRLFILE:
+ case CURLOPT_PROXY_KEYPASSWD:
+ case CURLOPT_PROXY_PINNEDPUBLICKEY:
+ case CURLOPT_PROXY_SSL_CIPHER_LIST:
+ case CURLOPT_PROXY_SSLCERT:
+ case CURLOPT_PROXY_SSLCERTTYPE:
+ case CURLOPT_PROXY_SSLKEY:
+ case CURLOPT_PROXY_SSLKEYTYPE:
+ case CURLOPT_PROXY_TLSAUTH_PASSWORD:
+ case CURLOPT_PROXY_TLSAUTH_TYPE:
+ case CURLOPT_PROXY_TLSAUTH_USERNAME:
+#endif
+#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */
+ case CURLOPT_ABSTRACT_UNIX_SOCKET:
+#endif
#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
case CURLOPT_REQUEST_TARGET:
#endif
@@ -2976,10 +3076,13 @@ PHP_FUNCTION(curl_getinfo)
long as there's no 32-bit int overflow. */
long l_code;
double d_code;
-#if LIBCURL_VERSION_NUM > 0x071301
+#if LIBCURL_VERSION_NUM > 0x071301 /* 7.19.1 */
struct curl_certinfo *ci = NULL;
zval listcode;
#endif
+#if LIBCURL_VERSION_NUM >= 0x073700 /* 7.55.0 */
+ curl_off_t co;
+#endif
array_init(return_value);
@@ -3077,6 +3180,42 @@ PHP_FUNCTION(curl_getinfo)
CAAL("local_port", l_code);
}
#endif
+#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */
+ if (curl_easy_getinfo(ch->cp, CURLINFO_HTTP_VERSION, &l_code) == CURLE_OK) {
+ CAAL("http_version", l_code);
+ }
+#endif
+#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */
+ if (curl_easy_getinfo(ch->cp, CURLINFO_PROTOCOL, &l_code) == CURLE_OK) {
+ CAAL("protocol", l_code);
+ }
+ if (curl_easy_getinfo(ch->cp, CURLINFO_PROXY_SSL_VERIFYRESULT, &l_code) == CURLE_OK) {
+ CAAL("ssl_verifyresult", l_code);
+ }
+ if (curl_easy_getinfo(ch->cp, CURLINFO_SCHEME, &s_code) == CURLE_OK) {
+ CAAS("scheme", s_code);
+ }
+#endif
+#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
+ if (curl_easy_getinfo(ch->cp, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &co) == CURLE_OK) {
+ CAAL("content_length_download", co);
+ }
+ if (curl_easy_getinfo(ch->cp, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &co) == CURLE_OK) {
+ CAAL("content_length_upload", co);
+ }
+ if (curl_easy_getinfo(ch->cp, CURLINFO_SIZE_DOWNLOAD_T, &co) == CURLE_OK) {
+ CAAL("size_download", co);
+ }
+ if (curl_easy_getinfo(ch->cp, CURLINFO_SIZE_UPLOAD_T, &co) == CURLE_OK) {
+ CAAL("size_upload", co);
+ }
+ if (curl_easy_getinfo(ch->cp, CURLINFO_SPEED_DOWNLOAD_T, &co) == CURLE_OK) {
+ CAAL("speed_download", co);
+ }
+ if (curl_easy_getinfo(ch->cp, CURLINFO_SPEED_UPLOAD_T, &co) == CURLE_OK) {
+ CAAL("speed_upload", co);
+ }
+#endif
if (ch->header.str) {
CAASTR("request_header", ch->header.str);
}
@@ -3153,6 +3292,18 @@ PHP_FUNCTION(curl_getinfo)
}
break;
}
+#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */
+ case CURLINFO_OFF_T:
+ {
+ curl_off_t c_off;
+ if (curl_easy_getinfo(ch->cp, option, &c_off) == CURLE_OK) {
+ RETURN_LONG((long) c_off);
+ } else {
+ RETURN_FALSE;
+ }
+ break;
+ }
+#endif
default:
RETURN_FALSE;
}