X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_request_api.c;h=2a5f68e7ab1c5e564ba4d0200b38972aa4167ccd;hp=4ebbc2fdfaf2c090720fe9cac779d5a46f398a5d;hb=858f68584ad6016446801fccfa6bd82a94b5f512;hpb=5ba379899fb1e05ede73674dc010ce8846e051c2 diff --git a/http_request_api.c b/http_request_api.c index 4ebbc2f..2a5f68e 100644 --- a/http_request_api.c +++ b/http_request_api.c @@ -161,6 +161,9 @@ PHP_MINIT_FUNCTION(http_request) HTTP_LONG_CONSTANT("HTTP_AUTH_BASIC", CURLAUTH_BASIC); HTTP_LONG_CONSTANT("HTTP_AUTH_DIGEST", CURLAUTH_DIGEST); +#if HTTP_CURL_VERSION(7,19,3) + HTTP_LONG_CONSTANT("HTTP_AUTH_DIGEST_IE", CURLAUTH_DIGEST_IE); +#endif HTTP_LONG_CONSTANT("HTTP_AUTH_NTLM", CURLAUTH_NTLM); HTTP_LONG_CONSTANT("HTTP_AUTH_GSSNEG", CURLAUTH_GSSNEGOTIATE); HTTP_LONG_CONSTANT("HTTP_AUTH_ANY", CURLAUTH_ANY); @@ -188,6 +191,15 @@ PHP_MINIT_FUNCTION(http_request) #endif HTTP_LONG_CONSTANT("HTTP_PROXY_SOCKS5", CURLPROXY_SOCKS5); HTTP_LONG_CONSTANT("HTTP_PROXY_HTTP", CURLPROXY_HTTP); +#if HTTP_CURL_VERSION(7,19,4) + HTTP_LONG_CONSTANT("HTTP_PROXY_HTTP_1_0", CURLPROXY_HTTP_1_0); +#endif + +#if HTTP_CURL_VERSION(7,19,1) + HTTP_LONG_CONSTANT("HTTP_POSTREDIR_301", CURL_REDIR_POST_301); + HTTP_LONG_CONSTANT("HTTP_POSTREDIR_302", CURL_REDIR_POST_302); + HTTP_LONG_CONSTANT("HTTP_POSTREDIR_ALL", CURL_REDIR_POST_ALL); +#endif return SUCCESS; } /* }}} */ @@ -459,11 +471,19 @@ PHP_HTTP_API void _http_request_defaults(http_request *request) HTTP_CURL_OPT(CURLOPT_PROGRESSFUNCTION, NULL); HTTP_CURL_OPT(CURLOPT_URL, NULL); HTTP_CURL_OPT(CURLOPT_NOPROGRESS, 1L); +#if HTTP_CURL_VERSION(7,19,4) + HTTP_CURL_OPT(CURLOPT_NOPROXY, NULL); +#endif HTTP_CURL_OPT(CURLOPT_PROXY, NULL); HTTP_CURL_OPT(CURLOPT_PROXYPORT, 0L); HTTP_CURL_OPT(CURLOPT_PROXYTYPE, 0L); - HTTP_CURL_OPT(CURLOPT_PROXYUSERPWD, NULL); + /* libcurl < 7.19.6 does not clear auth info with USERPWD set to NULL */ +#if HTTP_CURL_VERSION(7,19,1) + HTTP_CURL_OPT(CURLOPT_PROXYUSERNAME, NULL); + HTTP_CURL_OPT(CURLOPT_PROXYPASSWORD, NULL); +#endif HTTP_CURL_OPT(CURLOPT_PROXYAUTH, 0L); + HTTP_CURL_OPT(CURLOPT_HTTPPROXYTUNNEL, 0L); HTTP_CURL_OPT(CURLOPT_DNS_CACHE_TIMEOUT, 60L); HTTP_CURL_OPT(CURLOPT_IPRESOLVE, 0); HTTP_CURL_OPT(CURLOPT_LOW_SPEED_LIMIT, 0L); @@ -480,11 +500,18 @@ PHP_HTTP_API void _http_request_defaults(http_request *request) HTTP_CURL_OPT(CURLOPT_FORBID_REUSE, 0L); HTTP_CURL_OPT(CURLOPT_INTERFACE, NULL); HTTP_CURL_OPT(CURLOPT_PORT, 0L); +#if HTTP_CURL_VERSION(7,19,0) + HTTP_CURL_OPT(CURLOPT_ADDRESS_SCOPE, 0L); +#endif #if HTTP_CURL_VERSION(7,15,2) HTTP_CURL_OPT(CURLOPT_LOCALPORT, 0L); HTTP_CURL_OPT(CURLOPT_LOCALPORTRANGE, 0L); #endif - HTTP_CURL_OPT(CURLOPT_USERPWD, NULL); + /* libcurl < 7.19.6 does not clear auth info with USERPWD set to NULL */ +#if HTTP_CURL_VERSION(7,19,1) + HTTP_CURL_OPT(CURLOPT_USERNAME, NULL); + HTTP_CURL_OPT(CURLOPT_PASSWORD, NULL); +#endif HTTP_CURL_OPT(CURLOPT_HTTPAUTH, 0L); HTTP_CURL_OPT(CURLOPT_ENCODING, NULL); #if HTTP_CURL_VERSION(7,16,2) @@ -503,6 +530,9 @@ PHP_HTTP_API void _http_request_defaults(http_request *request) HTTP_CURL_OPT(CURLOPT_USERAGENT, "PECL::HTTP/" PHP_HTTP_VERSION " (PHP/" PHP_VERSION ")"); HTTP_CURL_OPT(CURLOPT_HTTPHEADER, NULL); HTTP_CURL_OPT(CURLOPT_COOKIE, NULL); + HTTP_CURL_OPT(CURLOPT_COOKIESESSION, 0L); + HTTP_CURL_OPT(CURLOPT_COOKIEFILE, NULL); + HTTP_CURL_OPT(CURLOPT_COOKIEJAR, NULL); #if HTTP_CURL_VERSION(7,14,1) HTTP_CURL_OPT(CURLOPT_COOKIELIST, NULL); #endif @@ -620,7 +650,16 @@ PHP_HTTP_API STATUS _http_request_prepare(http_request *request, HashTable *opti if ((zoption = http_request_option(request, options, "proxyauthtype", IS_LONG))) { HTTP_CURL_OPT(CURLOPT_PROXYAUTH, Z_LVAL_P(zoption)); } + /* tunnel */ + if ((zoption = http_request_option(request, options, "proxytunnel", IS_BOOL)) && Z_BVAL_P(zoption)) { + HTTP_CURL_OPT(CURLOPT_HTTPPROXYTUNNEL, 1L); + } + } +#if HTTP_CURL_VERSION(7,19,4) + if ((zoption = http_request_option(request, options, "noproxy", IS_STRING))) { + HTTP_CURL_OPT(CURLOPT_NOPROXY, Z_STRVAL_P(zoption)); } +#endif /* dns */ if ((zoption = http_request_option(request, options, "dns_cache_timeout", IS_LONG))) {