WordPress.org

Make WordPress Core

Ticket #10624: 10624.diff

File 10624.diff, 2.2 KB (added by dd32, 9 years ago)
  • wp-includes/http.php

     
    599599                );
    600600
    601601                $r = wp_parse_args( $args, $defaults );
     602                if ( ! isset($r['max-redirects']) )
     603                        $r['max-redirects'] = $r['redirection'];
    602604
    603605                if ( isset($r['headers']['User-Agent']) ) {
    604606                        $r['user-agent'] = $r['headers']['User-Agent'];
     
    726728                        return new WP_Error('http_request_failed', $arrHeaders['response']['code'] . ': ' . $arrHeaders['response']['message']);
    727729
    728730                // If location is found, then assume redirect and redirect to location.
    729                 if ( isset($arrHeaders['headers']['location']) ) {
     731                if ( isset($arrHeaders['headers']['location']) && 0 != $r['max-redirects'] ) {
    730732                        if ( $r['redirection']-- > 0 ) {
    731733                                return $this->request($arrHeaders['headers']['location'], $r);
    732734                        } else {
     
    13031305                        curl_setopt( $handle, CURLOPT_HEADER, false );
    13041306
    13051307                // The option doesn't work with safe mode or when open_basedir is set.
    1306                 if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
     1308                if ( 0 != $r['redirection'] && !ini_get('safe_mode') && !ini_get('open_basedir') )
    13071309                        curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, true );
    13081310
    13091311                if ( !empty( $r['headers'] ) ) {
     
    13341336                $theResponse = curl_exec( $handle );
    13351337
    13361338                if ( !empty($theResponse) ) {
    1337                         $parts = explode("\r\n\r\n", $theResponse);
    1338 
    13391339                        $headerLength = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
    13401340                        $theHeaders = trim( substr($theResponse, 0, $headerLength) );
    13411341                        $theBody = substr( $theResponse, $headerLength );
     
    13451345                        }
    13461346                        $theHeaders = WP_Http::processHeaders($theHeaders);
    13471347                } else {
     1348                        if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array(301, 302) ) )
     1349                                return new WP_Error('http_request_failed', __('Too many redirects.'));
    13481350                        if ( $curl_error = curl_error($handle) )
    13491351                                return new WP_Error('http_request_failed', $curl_error);
    1350                         if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array(301, 302) ) )
    1351                                 return new WP_Error('http_request_failed', __('Too many redirects.'));
    13521352
    13531353                        $theHeaders = array( 'headers' => array(), 'cookies' => array() );
    13541354                        $theBody = '';