WordPress.org

Make WordPress Core

Ticket #16889: 16889.diff

File 16889.diff, 2.4 KB (added by dd32, 8 years ago)
  • wp-includes/class-http.php

     
    586586
    587587                return $absolute_path . '/' . ltrim( $path, '/' );
    588588        }
     589
     590        /**
     591         * Determine if we should perform a redirection
     592         * @param $http_code int The HTTP Response code
     593         * @param $args mixed The $args passed to the request function
     594         *
     595         * @since 3.6.0
     596         *
     597         * @return bool
     598         */
     599        public static function should_redirect( $http_code, $args ) {
     600                if ( 0 === $args['_redirection'] ) // _redirection: The original requested number of redirections
     601                        return false;
     602
     603                if ( $http_code < 300 || $http_code > 399 )
     604                        return false;
     605
     606                return true;
     607        }
    589608}
    590609
    591610/**
     
    798817                $arrHeaders = WP_Http::processHeaders( $process['headers'] );
    799818
    800819                // If location is found, then assume redirect and redirect to location.
    801                 if ( isset($arrHeaders['headers']['location']) && 0 !== $r['_redirection'] ) {
     820                if ( isset($arrHeaders['headers']['location']) && WP_HTTP::should_redirect( $arrHeaders['response']['code'], $r ) ) {
    802821                        if ( $r['redirection']-- > 0 ) {
    803822                                return wp_remote_request( WP_HTTP::make_absolute_url( $arrHeaders['headers']['location'], $url ), $r);
    804823                        } else {
     
    9881007                else
    9891008                        $processedHeaders = WP_Http::processHeaders($meta['wrapper_data']);
    9901009
    991                 if ( ! empty( $processedHeaders['headers']['location'] ) && 0 !== $r['_redirection'] ) { // _redirection: The requested number of redirections
     1010                if ( ! empty( $processedHeaders['headers']['location'] ) && WP_HTTP::should_redirect( $processedHeaders['response']['code'], $r ) ) {
    9921011                        if ( $r['redirection']-- > 0 ) {
    9931012                                return wp_remote_request( WP_HTTP::make_absolute_url( $processedHeaders['headers']['location'], $url ), $r );
    9941013                        } else {
     
    12531272                if ( $r['stream'] )
    12541273                        fclose( $this->stream_handle );
    12551274
    1256                 // See #11305 - When running under safe mode, redirection is disabled above. Handle it manually.
    1257                 if ( ! empty( $theHeaders['headers']['location'] ) && 0 !== $r['_redirection'] ) { // _redirection: The requested number of redirections
     1275                if ( ! empty( $theHeaders['headers']['location'] ) && WP_HTTP::should_redirect( $response['code'], $r ) ) {
    12581276                        if ( $r['redirection']-- > 0 ) {
    12591277                                return wp_remote_request( WP_HTTP::make_absolute_url( $theHeaders['headers']['location'], $url ), $r );
    12601278                        } else {