WordPress.org

Make WordPress Core

Changeset 8533


Ignore:
Timestamp:
08/04/08 16:28:12 (6 years ago)
Author:
ryan
Message:

Cycle through available transports trying each one. Props jacobsantos. see #4779

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/http.php

    r8528 r8533  
    8989 
    9090        if ( is_null($working_transport) ) { 
    91             if ( true === WP_Http_ExtHttp::test() ) 
    92                 $working_transport = new WP_Http_ExtHttp(); 
    93             else if ( true === WP_Http_Curl::test() ) 
    94                 $working_transport = new WP_Http_Curl(); 
    95             else if ( true === WP_Http_Streams::test() ) 
    96                 $working_transport = new WP_Http_Streams(); 
    97             else if ( true === WP_Http_Fopen::test() ) 
    98                 $working_transport = new WP_Http_Fopen(); 
    99             else if ( true === WP_Http_Fsockopen::test() ) 
    100                 $working_transport = new WP_Http_Fsockopen(); 
     91            if ( true === WP_Http_ExtHttp::test() && apply_filters('use_http_extension_transport', true) ) 
     92                $working_transport[] = new WP_Http_ExtHttp(); 
     93            else if ( true === WP_Http_Curl::test() && apply_filters('use_curl_transport', true) ) 
     94                $working_transport[] = new WP_Http_Curl(); 
     95            else if ( true === WP_Http_Streams::test() && apply_filters('use_streams_transport', true) ) 
     96                $working_transport[] = new WP_Http_Streams(); 
     97            else if ( true === WP_Http_Fopen::test() && apply_filters('use_fopen_transport', true) ) 
     98                $working_transport[] = new WP_Http_Fopen(); 
     99            else if ( true === WP_Http_Fsockopen::test() && apply_filters('use_fsockopen_transport', true) ) 
     100                $working_transport[] = new WP_Http_Fsockopen(); 
    101101        } 
    102102 
     
    122122 
    123123        if ( is_null($working_transport) ) { 
    124             if ( true === WP_Http_ExtHttp::test() ) 
    125                 $working_transport = new WP_Http_ExtHttp(); 
    126             else if ( true === WP_Http_Streams::test() ) 
    127                 $working_transport = new WP_Http_Streams(); 
    128             else if ( true === WP_Http_Fsockopen::test() ) 
    129                 $working_transport = new WP_Http_Fsockopen(); 
     124            if ( true === WP_Http_ExtHttp::test() && apply_filters('use_http_extension_transport', true) ) 
     125                $working_transport[] = new WP_Http_ExtHttp(); 
     126            else if ( true === WP_Http_Streams::test() && apply_filters('use_streams_transport', true) ) 
     127                $working_transport[] = new WP_Http_Streams(); 
     128            else if ( true === WP_Http_Fsockopen::test() && apply_filters('use_fsockopen_transport', true) ) 
     129                $working_transport[] = new WP_Http_Fsockopen(); 
    130130        } 
    131131 
     
    171171     * @param str|array $args Optional. Override the defaults. 
    172172     * @param string|array $headers Optional. Either the header string or array of Header name and value pairs. Expects sanitized. 
    173      * @param string $body Optional. The body that should be sent. Expected to be already processed. 
     173     * @param string $body Optional. The body that should be sent. Will be automatically escaped and processed. 
    174174     * @return boolean 
    175175     */ 
     
    178178 
    179179        $defaults = array( 
    180             'method' => 'GET', 'timeout' => 3, 
     180            'method' => 'GET', 'timeout' => apply_filters('http_request_timeout', 3), 
    181181            'redirection' => 5, 'httpversion' => '1.0', 
    182182            'user-agent' => apply_filters('http_headers_useragent', 'WordPress/' . $wp_version ), 
     
    196196            $headers['user-agent'] = $r['user-agent']; 
    197197 
    198         if ( is_null($body) ) 
    199             $transport = WP_Http::_getTransport(); 
    200         else 
    201             $transport = WP_Http::_postTransport(); 
    202  
    203         return $transport->request($url, $r, $headers, $body); 
     198        if ( is_null($body) ) { 
     199            if ( ! is_string($body) ) 
     200                $body = http_build_query($body); 
     201 
     202            $transports = WP_Http::_getTransport(); 
     203        } else 
     204            $transports = WP_Http::_postTransport(); 
     205 
     206        $response = array( 'headers' => array(), 'body' => '', 'response' => array('code', 'message') ); 
     207        foreach( (array) $transports as $transport ) { 
     208            $response = $transport->request($url, $r, $headers, $body); 
     209 
     210            if( !is_wp_error($response) ) 
     211                break; 
     212        } 
     213 
     214        return $response; 
    204215    } 
    205216 
     
    415426            $error_reporting = error_reporting(0); 
    416427 
    417         $handle = fsockopen($arrURL['host'], $arrURL['port'], $iError, $strError, apply_filters('http_request_timeout', absint($r['timeout']) ) ); 
     428        $handle = fsockopen($arrURL['host'], $arrURL['port'], $iError, $strError, $r['timeout'] ); 
    418429 
    419430        if ( false === $handle ) 
     
    539550 
    540551        if ( function_exists('stream_set_timeout') ) 
    541             stream_set_timeout($handle, apply_filters('http_request_timeout', $r['timeout']) ); 
     552            stream_set_timeout($handle, $r['timeout'] ); 
    542553 
    543554        if ( ! $r['blocking'] ) { 
     
    613624        $r = wp_parse_args( $args, $defaults ); 
    614625 
     626        if ( isset($headers['User-Agent']) ) { 
     627            $r['user-agent'] = $headers['User-Agent']; 
     628            unset($headers['User-Agent']); 
     629        } else if( isset($headers['user-agent']) ) { 
     630            $r['user-agent'] = $headers['user-agent']; 
     631            unset($headers['user-agent']); 
     632        } else { 
     633            $r['user-agent'] = apply_filters('http_headers_useragent', 'WordPress/' . $wp_version ); 
     634        } 
     635 
    615636        $arrURL = parse_url($url); 
    616637 
     
    621642            array( 
    622643                'method' => strtoupper($r['method']), 
    623                 'user-agent' => $headers['User-Agent'], 
     644                'user-agent' => $r['user-agent'], 
    624645                'max_redirects' => $r['redirection'], 
    625646                'protocol_version' => (float) $r['httpversion'], 
     
    629650        ); 
    630651 
     652        var_dump($arrContext); 
    631653        if ( ! is_null($body) ) 
    632654            $arrContext['http']['content'] = $body; 
     
    639661            return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $url)); 
    640662 
    641         stream_set_timeout($handle, apply_filters('http_request_stream_timeout', $r['timeout']) ); 
     663        stream_set_timeout($handle, $r['timeout'] ); 
    642664 
    643665        if ( ! $r['blocking'] ) { 
Note: See TracChangeset for help on using the changeset viewer.