WordPress.org

Make WordPress Core

Ticket #9078: 9078.3.diff

File 9078.3.diff, 6.1 KB (added by sivel, 9 years ago)
  • wp-includes/http.php

     
    228228                static $working_transport, $blocking_transport, $nonblocking_transport;
    229229
    230230                if ( is_null($working_transport) ) {
    231                         if ( true === WP_Http_ExtHttp::test() && apply_filters('use_http_extension_transport', true) ) {
     231                        if ( true === WP_Http_ExtHttp::test($args) ) {
    232232                                $working_transport['exthttp'] = new WP_Http_ExtHttp();
    233233                                $blocking_transport[] = &$working_transport['exthttp'];
    234                         } else if ( true === WP_Http_Curl::test() && apply_filters('use_curl_transport', true) ) {
     234                        } else if ( true === WP_Http_Curl::test($args) ) {
    235235                                $working_transport['curl'] = new WP_Http_Curl();
    236236                                $blocking_transport[] = &$working_transport['curl'];
    237                         } else if ( true === WP_Http_Streams::test() && apply_filters('use_streams_transport', true) ) {
     237                        } else if ( true === WP_Http_Streams::test($args) ) {
    238238                                $working_transport['streams'] = new WP_Http_Streams();
    239239                                $blocking_transport[] = &$working_transport['streams'];
    240                         } else if ( true === WP_Http_Fopen::test() && apply_filters('use_fopen_transport', true) && ( isset($args['ssl']) && !$args['ssl'] ) ) {
     240                        } else if ( true === WP_Http_Fopen::test($args) ) {
    241241                                $working_transport['fopen'] = new WP_Http_Fopen();
    242242                                $blocking_transport[] = &$working_transport['fopen'];
    243                         } else if ( true === WP_Http_Fsockopen::test() && apply_filters('use_fsockopen_transport', true) && ( isset($args['ssl']) && !$args['ssl'] ) ) {
     243                        } else if ( true === WP_Http_Fsockopen::test($args) ) {
    244244                                $working_transport['fsockopen'] = new WP_Http_Fsockopen();
    245245                                $blocking_transport[] = &$working_transport['fsockopen'];
    246246                        }
     
    279279                static $working_transport, $blocking_transport, $nonblocking_transport;
    280280
    281281                if ( is_null($working_transport) ) {
    282                         if ( true === WP_Http_ExtHttp::test() && apply_filters('use_http_extension_transport', true) ) {
     282                        if ( true === WP_Http_ExtHttp::test($args) ) {
    283283                                $working_transport['exthttp'] = new WP_Http_ExtHttp();
    284284                                $blocking_transport[] = &$working_transport['exthttp'];
    285                         } else if ( true === WP_Http_Curl::test() && apply_filters('use_curl_transport', true) ) {
     285                        } else if ( true === WP_Http_Curl::test($args) ) {
    286286                                $working_transport['curl'] = new WP_Http_Curl();
    287287                                $blocking_transport[] = &$working_transport['curl'];
    288                         } else if ( true === WP_Http_Streams::test() && apply_filters('use_streams_transport', true) ) {
     288                        } else if ( true === WP_Http_Streams::test($args) ) {
    289289                                $working_transport['streams'] = new WP_Http_Streams();
    290290                                $blocking_transport[] = &$working_transport['streams'];
    291                         } else if ( true === WP_Http_Fsockopen::test() && apply_filters('use_fsockopen_transport', true) && ( isset($args['ssl']) && !$args['ssl'] ) ) {
     291                        } else if ( true === WP_Http_Fsockopen::test($args) ) {
    292292                                $working_transport['fsockopen'] = new WP_Http_Fsockopen();
    293293                                $blocking_transport[] = &$working_transport['fsockopen'];
    294294                        }
     
    382382                else
    383383                        $r['ssl'] = false;
    384384
     385                // Determine if this request is to OUR install of WordPress
     386                if ( stristr(get_bloginfo('url'), $arrURL['host']) )
     387                        $r['local'] = true;
     388                else
     389                        $r['local'] = false;
     390
    385391                if ( is_null( $r['headers'] ) )
    386392                        $r['headers'] = array();
    387393
     
    793799         * @static
    794800         * @return boolean False means this class can not be used, true means it can.
    795801         */
    796         function test() {
    797                 if ( false !== ($option = get_option( 'disable_fsockopen' )) && time()-$option < 43200 ) // 12 hours
     802        function test($args = array()) {
     803                if ( false !== ($option = get_option( 'disable_fsockopen' )) && time()-$option < 43200 && true != apply_filters('use_fsockopen_transport', true) ) // 12 hours
    798804                        return false;
    799805
    800                 if ( function_exists( 'fsockopen' ) )
    801                         return true;
     806                if ( function_exists( 'fsockopen' ) ) {
     807                        if ( isset($args['ssl']) && !$args['ssl'] )
     808                                return true;
     809                }
    802810
    803811                return false;
    804812        }
     
    906914         * @static
    907915         * @return boolean False means this class can not be used, true means it can.
    908916         */
    909         function test() {
    910                 if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) )
    911                         return false;
     917        function test($args = array()) {
     918                if ( function_exists('fopen') && (function_exists('ini_get') && true == ini_get('allow_url_fopen')) && true == apply_filters('use_fopen_transport', true) ) {
     919                        if (
     920                                ( isset($args['ssl']) && !$args['ssl'] ) ||
     921                                ( isset($args['local']) && $args['local'] == true && apply_filters('https_local_ssl_verify', true) != true ) ||
     922                                ( isset($args['local']) && $args['local'] == false && apply_filters('https_ssl_verify', true) != true ) ||
     923                                ( isset($args['sslverify']) && !$args['sslverify'] )
     924                        )
     925                                return true;
     926                }
    912927
    913                 return true;
     928                return false;           
    914929        }
    915930}
    916931
     
    10411056         *
    10421057         * @return boolean False means this class can not be used, true means it can.
    10431058         */
    1044         function test() {
    1045                 if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) )
     1059        function test($args = array()) {
     1060                if ( ! function_exists('fopen') && (function_exists('ini_get') && true != ini_get('allow_url_fopen')) && true != apply_filters('use_streams_transport', true) )
    10461061                        return false;
    10471062
    10481063                if ( version_compare(PHP_VERSION, '5.0', '<') )
     
    11661181         *
    11671182         * @return boolean False means this class can not be used, true means it can.
    11681183         */
    1169         function test() {
    1170                 if ( function_exists('http_request') )
     1184        function test($args = array()) {
     1185                if ( function_exists('http_request') && true == apply_filters('use_http_extension_transport', true) )
    11711186                        return true;
    11721187
    11731188                return false;
     
    13181333         *
    13191334         * @return boolean False means this class can not be used, true means it can.
    13201335         */
    1321         function test() {
    1322                 if ( function_exists('curl_init') && function_exists('curl_exec') )
     1336        function test($args = array()) {
     1337                if ( function_exists('curl_init') && function_exists('curl_exec') && true == apply_filters('use_curl_transport', true) )
    13231338                        return true;
    13241339
    13251340                return false;