WordPress.org

Make WordPress Core

Ticket #14786: 14786.2.patch

File 14786.2.patch, 2.0 KB (added by hakre, 11 years ago)
  • wp-includes/class-http.php

     
    8888        function &_getTransport( $args = array() ) {
    8989                static $working_transport, $blocking_transport, $nonblocking_transport;
    9090
    91                 if ( is_null($working_transport) ) {
    92                         if ( true === WP_Http_ExtHttp::test($args) ) {
    93                                 $working_transport['exthttp'] = new WP_Http_ExtHttp();
    94                                 $blocking_transport[] = &$working_transport['exthttp'];
    95                         } else if ( true === WP_Http_Curl::test($args) ) {
    96                                 $working_transport['curl'] = new WP_Http_Curl();
    97                                 $blocking_transport[] = &$working_transport['curl'];
    98                         } else if ( true === WP_Http_Streams::test($args) ) {
    99                                 $working_transport['streams'] = new WP_Http_Streams();
    100                                 $blocking_transport[] = &$working_transport['streams'];
    101                         } else if ( true === WP_Http_Fopen::test($args) ) {
    102                                 $working_transport['fopen'] = new WP_Http_Fopen();
    103                                 $blocking_transport[] = &$working_transport['fopen'];
    104                         } else if ( true === WP_Http_Fsockopen::test($args) ) {
    105                                 $working_transport['fsockopen'] = new WP_Http_Fsockopen();
    106                                 $blocking_transport[] = &$working_transport['fsockopen'];
    107                         }
     91                if ( is_null( $working_transport ) ) {
     92                        $transports = array(
     93                                'exthttp'   => 'ExtHTTP',
     94                                'curl'      => 'Curl',
     95                                'streams'   => 'Streams',
     96                                'fopen'     => 'Fopen',
     97                                'fsockopen' => 'Fsockopen',
     98                        );
    10899
    109                         foreach ( array('curl', 'streams', 'fopen', 'fsockopen', 'exthttp') as $transport ) {
    110                                 if ( isset($working_transport[$transport]) )
    111                                         $nonblocking_transport[] = &$working_transport[$transport];
     100                        foreach( $transports as $name => $spec) {
     101                                $class = 'WP_Http_' . $spec;
     102                                if ( !call_user_func( array( $class, 'test' ), $args ) )
     103                                        continue;
     104
     105                                $wp_http = new $class();
     106
     107                                $working_transport[$name] = &$wp_http;
     108                                $blocking_transport[]     = &$wp_http;
     109                                $nonblocking_transport[]  = &$wp_http;
     110                               
     111                                break;
    112112                        }
    113113                }
    114114