WordPress.org

Make WordPress Core

Ticket #9078: 9078.2.diff

File 9078.2.diff, 7.2 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', '<') )
    10491064                        return false;
    10501065
    1051                 return true;
     1066                if (
     1067                        ( isset($args['ssl']) && !$args['ssl'] ) ||
     1068                        ( isset($args['local']) && $args['local'] == true && apply_filters('https_local_ssl_verify', true) != true ) ||
     1069                        ( isset($args['local']) && $args['local'] == false && apply_filters('https_ssl_verify', true) != true ) ||
     1070                        ( isset($args['sslverify']) && !$args['sslverify'] )
     1071                )
     1072                        return true;
     1073
     1074                return false;
    10521075        }
    10531076}
    10541077
     
    11661189         *
    11671190         * @return boolean False means this class can not be used, true means it can.
    11681191         */
    1169         function test() {
    1170                 if ( function_exists('http_request') )
    1171                         return true;
     1192        function test($args = array()) {
     1193                if ( function_exists('http_request') && true == apply_filters('use_http_extension_transport', true) )
     1194                        if (
     1195                                ( isset($args['ssl']) && !$args['ssl'] ) ||
     1196                                ( isset($args['local']) && $args['local'] == true && apply_filters('https_local_ssl_verify', true) != true ) ||
     1197                                ( isset($args['local']) && $args['local'] == false && apply_filters('https_ssl_verify', true) != true ) ||
     1198                                ( isset($args['sslverify']) && !$args['sslverify'] )
     1199                        )
     1200                                return true;
    11721201
    11731202                return false;
    11741203        }
     
    13181347         *
    13191348         * @return boolean False means this class can not be used, true means it can.
    13201349         */
    1321         function test() {
    1322                 if ( function_exists('curl_init') && function_exists('curl_exec') )
    1323                         return true;
     1350        function test($args = array()) {
     1351                if ( function_exists('curl_init') && function_exists('curl_exec') && true == apply_filters('use_curl_transport', true) )
     1352                        if (
     1353                                ( isset($args['ssl']) && !$args['ssl'] ) ||
     1354                                ( isset($args['local']) && $args['local'] == true && apply_filters('https_local_ssl_verify', true) != true ) ||
     1355                                ( isset($args['local']) && $args['local'] == false && apply_filters('https_ssl_verify', true) != true ) ||
     1356                                ( isset($args['sslverify']) && !$args['sslverify'] )
     1357                        )
     1358                                return true;
    13241359
    13251360                return false;
    13261361        }