WordPress.org

Make WordPress Core

Ticket #10624: 10624.diff

File 10624.diff, 2.2 KB (added by dd32, 6 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 = '';