Make WordPress Core

Ticket #11613: 11613.diff

File 11613.diff, 5.7 KB (added by dd32, 14 years ago)
  • wp-includes/http.php

     
    9494        function &_getTransport( $args = array() ) {
    9595                static $working_transport, $blocking_transport, $nonblocking_transport;
    9696
    97                 if ( is_null($working_transport) ) {
     97                $key = md5(serialize($args));
     98                if ( empty($working_transport[$key]) ) {
     99
     100                        if ( ! isset( $working_transport[$key] ) )
     101                                $working_transport[$key] = array();
     102                        if ( ! isset( $blocking_transport[$key] ) )
     103                                $blocking_transport[$key] = array();
     104                        if ( ! isset( $nonblocking_transport[$key] ) )
     105                                $nonblocking_transport[$key] = array();
     106
    98107                        if ( true === WP_Http_ExtHttp::test($args) ) {
    99                                 $working_transport['exthttp'] = new WP_Http_ExtHttp();
    100                                 $blocking_transport[] = &$working_transport['exthttp'];
     108                                $working_transport[$key]['exthttp'] = new WP_Http_ExtHttp();
     109                                $blocking_transport[$key][] = &$working_transport[$key]['exthttp'];
    101110                        } else if ( true === WP_Http_Curl::test($args) ) {
    102                                 $working_transport['curl'] = new WP_Http_Curl();
    103                                 $blocking_transport[] = &$working_transport['curl'];
     111                                $working_transport[$key]['curl'] = new WP_Http_Curl();
     112                                $blocking_transport[$key][] = &$working_transport[$key]['curl'];
    104113                        } else if ( true === WP_Http_Streams::test($args) ) {
    105                                 $working_transport['streams'] = new WP_Http_Streams();
    106                                 $blocking_transport[] = &$working_transport['streams'];
     114                                $working_transport[$key]['streams'] = new WP_Http_Streams();
     115                                $blocking_transport[$key][] = &$working_transport[$key]['streams'];
    107116                        } else if ( true === WP_Http_Fopen::test($args) ) {
    108                                 $working_transport['fopen'] = new WP_Http_Fopen();
    109                                 $blocking_transport[] = &$working_transport['fopen'];
     117                                $working_transport[$key]['fopen'] = new WP_Http_Fopen();
     118                                $blocking_transport[$key][] = &$working_transport[$key]['fopen'];
    110119                        } else if ( true === WP_Http_Fsockopen::test($args) ) {
    111                                 $working_transport['fsockopen'] = new WP_Http_Fsockopen();
    112                                 $blocking_transport[] = &$working_transport['fsockopen'];
     120                                $working_transport[$key]['fsockopen'] = new WP_Http_Fsockopen();
     121                                $blocking_transport[$key][] = &$working_transport[$key]['fsockopen'];
    113122                        }
    114123
    115124                        foreach ( array('curl', 'streams', 'fopen', 'fsockopen', 'exthttp') as $transport ) {
    116                                 if ( isset($working_transport[$transport]) )
    117                                         $nonblocking_transport[] = &$working_transport[$transport];
     125                                if ( isset($working_transport[$key][$transport]) )
     126                                        $nonblocking_transport[$key][] = &$working_transport[$key][$transport];
    118127                        }
    119128                }
    120129
    121                 do_action( 'http_transport_get_debug', $working_transport, $blocking_transport, $nonblocking_transport );
     130                do_action( 'http_transport_get_debug', $working_transport[$key], $blocking_transport[$key], $nonblocking_transport[$key] );
    122131
    123132                if ( isset($args['blocking']) && !$args['blocking'] )
    124                         return $nonblocking_transport;
     133                        return $nonblocking_transport[$key];
    125134                else
    126                         return $blocking_transport;
     135                        return $blocking_transport[$key];
    127136        }
    128137
    129138        /**
     
    143152         */
    144153        function &_postTransport( $args = array() ) {
    145154                static $working_transport, $blocking_transport, $nonblocking_transport;
     155                $key = md5(serialize($args));
     156                if ( !empty($working_transport[$key]) ) {
    146157
    147                 if ( is_null($working_transport) ) {
     158                        if ( ! isset( $working_transport[$key] ) )
     159                                $working_transport[$key] = array();
     160                        if ( ! isset( $blocking_transport[$key] ) )
     161                                $blocking_transport[$key] = array();
     162                        if ( ! isset( $nonblocking_transport[$key] ) )
     163                                $nonblocking_transport[$key] = array();
     164                       
    148165                        if ( true === WP_Http_ExtHttp::test($args) ) {
    149                                 $working_transport['exthttp'] = new WP_Http_ExtHttp();
    150                                 $blocking_transport[] = &$working_transport['exthttp'];
     166                                $working_transport[$key]['exthttp'] = new WP_Http_ExtHttp();
     167                                $blocking_transport[$key][] = &$working_transport[$key]['exthttp'];
    151168                        } else if ( true === WP_Http_Curl::test($args) ) {
    152                                 $working_transport['curl'] = new WP_Http_Curl();
    153                                 $blocking_transport[] = &$working_transport['curl'];
     169                                $working_transport[$key]['curl'] = new WP_Http_Curl();
     170                                $blocking_transport[$key][] = &$working_transport[$key]['curl'];
    154171                        } else if ( true === WP_Http_Streams::test($args) ) {
    155                                 $working_transport['streams'] = new WP_Http_Streams();
    156                                 $blocking_transport[] = &$working_transport['streams'];
     172                                $working_transport[$key]['streams'] = new WP_Http_Streams();
     173                                $blocking_transport[$key][] = &$working_transport[$key]['streams'];
    157174                        } else if ( true === WP_Http_Fsockopen::test($args) ) {
    158                                 $working_transport['fsockopen'] = new WP_Http_Fsockopen();
    159                                 $blocking_transport[] = &$working_transport['fsockopen'];
     175                                $working_transport[$key]['fsockopen'] = new WP_Http_Fsockopen();
     176                                $blocking_transport[$key][] = &$working_transport[$key]['fsockopen'];
    160177                        }
    161178
    162179                        foreach ( array('curl', 'streams', 'fsockopen', 'exthttp') as $transport ) {
    163                                 if ( isset($working_transport[$transport]) )
    164                                         $nonblocking_transport[] = &$working_transport[$transport];
     180                                if ( isset($working_transport[$key][$transport]) )
     181                                        $nonblocking_transport[$key][] = &$working_transport[$key][$transport];
    165182                        }
    166183                }
    167184
    168                 do_action( 'http_transport_post_debug', $working_transport, $blocking_transport, $nonblocking_transport );
     185                do_action( 'http_transport_post_debug', $working_transport[$key], $blocking_transport[$key], $nonblocking_transport[$key] );
    169186
    170187                if ( isset($args['blocking']) && !$args['blocking'] )
    171                         return $nonblocking_transport;
     188                        return $nonblocking_transport[$key];
    172189                else
    173                         return $blocking_transport;
     190                        return $blocking_transport[$key];
    174191        }
    175192
    176193        /**