X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FHttpFunctions.php;h=274d4a75f312154084ae8f63b93dcfc8440242a4;hb=d920741fc227983fe851696d9239593de8b3a766;hp=9093c830aacb3261c38c291e3bd51b1feb961169;hpb=1728c1a698cb3327abb102c2475cba0682e9ce18;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/HttpFunctions.php b/includes/HttpFunctions.php index 9093c830aa..274d4a75f3 100644 --- a/includes/HttpFunctions.php +++ b/includes/HttpFunctions.php @@ -350,13 +350,6 @@ class MWHttpRequest { } } - /** - * Set the referrer header - */ - public function setReferer( $url ) { - $this->setHeader( 'Referer', $url ); - } - /** * Set the user agent * @param $UA string @@ -441,8 +434,6 @@ class MWHttpRequest { * @return Status */ public function execute() { - global $wgTitle; - wfProfileIn( __METHOD__ ); $this->content = ""; @@ -451,10 +442,6 @@ class MWHttpRequest { $this->headersOnly = true; } - if ( is_object( $wgTitle ) && !isset( $this->reqHeaders['Referer'] ) ) { - $this->setReferer( wfExpandUrl( $wgTitle->getFullURL(), PROTO_CURRENT ) ); - } - $this->proxySetup(); // set up any proxy as needed if ( !$this->callback ) { @@ -751,10 +738,6 @@ class CurlHttpRequest extends MWHttpRequest { $this->curlOptions[CURLOPT_MAXREDIRS] = $this->maxRedirects; $this->curlOptions[CURLOPT_ENCODING] = ""; # Enable compression - /* not sure these two are actually necessary */ - if ( isset( $this->reqHeaders['Referer'] ) ) { - $this->curlOptions[CURLOPT_REFERER] = $this->reqHeaders['Referer']; - } $this->curlOptions[CURLOPT_USERAGENT] = $this->reqHeaders['User-Agent']; $this->curlOptions[CURLOPT_SSL_VERIFYHOST] = $this->sslVerifyHost ? 2 : 0; @@ -862,6 +845,7 @@ class PhpHttpRequest extends MWHttpRequest { } $this->reqHeaders['Accept'] = "*/*"; + $this->reqHeaders['Connection'] = 'Close'; if ( $this->method == 'POST' ) { // Required for HTTP 1.0 POSTs $this->reqHeaders['Content-Length'] = strlen( $this->postData ); @@ -870,52 +854,47 @@ class PhpHttpRequest extends MWHttpRequest { } } - $options = array(); - if ( $this->proxy ) { - $options['proxy'] = $this->urlToTCP( $this->proxy ); - $options['request_fulluri'] = true; - } + // Set up PHP stream context + $options = array( + 'http' => array( + 'method' => $this->method, + 'header' => implode( "\r\n", $this->getHeaderList() ), + 'protocol_version' => '1.1', + 'max_redirects' => $this->followRedirects ? $this->maxRedirects : 0, + 'ignore_errors' => true, + 'timeout' => $this->timeout, + // Curl options in case curlwrappers are installed + 'curl_verify_ssl_host' => $this->sslVerifyHost ? 2 : 0, + 'curl_verify_ssl_peer' => $this->sslVerifyCert, + ), + 'ssl' => array( + 'verify_peer' => $this->sslVerifyCert, + 'SNI_enabled' => true, + ), + ); - if ( !$this->followRedirects ) { - $options['max_redirects'] = 0; - } else { - $options['max_redirects'] = $this->maxRedirects; + if ( $this->proxy ) { + $options['http']['proxy'] = $this->urlToTCP( $this->proxy ); + $options['http']['request_fulluri'] = true; } - $options['method'] = $this->method; - $options['header'] = implode( "\r\n", $this->getHeaderList() ); - // Note that at some future point we may want to support - // HTTP/1.1, but we'd have to write support for chunking - // in version of PHP < 5.3.1 - $options['protocol_version'] = "1.0"; - - // This is how we tell PHP we want to deal with 404s (for example) ourselves. - // Only works on 5.2.10+ - $options['ignore_errors'] = true; - if ( $this->postData ) { - $options['content'] = $this->postData; + $options['http']['content'] = $this->postData; } - $options['timeout'] = $this->timeout; - if ( $this->sslVerifyHost ) { - $options['CN_match'] = $this->parsedUrl['host']; - } - if ( $this->sslVerifyCert ) { - $options['verify_peer'] = true; + $options['ssl']['CN_match'] = $this->parsedUrl['host']; } if ( is_dir( $this->caInfo ) ) { - $options['capath'] = $this->caInfo; + $options['ssl']['capath'] = $this->caInfo; } elseif ( is_file( $this->caInfo ) ) { - $options['cafile'] = $this->caInfo; + $options['ssl']['cafile'] = $this->caInfo; } elseif ( $this->caInfo ) { throw new MWException( "Invalid CA info passed: {$this->caInfo}" ); } - $scheme = $this->parsedUrl['scheme']; - $context = stream_context_create( array( "$scheme" => $options ) ); + $context = stream_context_create( $options ); $this->headerList = array(); $reqCount = 0;