WordPress.org

Make WordPress Core

Ticket #16606: 16606.6.patch

File 16606.6.patch, 4.8 KB (added by hakre, 7 years ago)
  • wp-includes/class-http.php

    ### Eclipse Workspace Patch 1.0
    #P wordpress-trunk
     
    745745         * @static
    746746         * @return boolean False means this class can not be used, true means it can.
    747747         */
    748         function test( $args = array() ) {
    749                 if ( false !== ($option = get_option( 'disable_fsockopen' )) && time()-$option < 43200 ) // 12 hours
    750                         return false;
     748        function test( $args = array(), $url = null ) {
     749                $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
    751750
    752                 $is_ssl = isset($args['ssl']) && $args['ssl'];
     751                $scheme = empty( $url ) ? 'http' : strtolower( parse_url( $url, PHP_URL_SCHEME ) );
    753752
    754                 if ( ! $is_ssl && function_exists( 'fsockopen' ) )
    755                         $use = true;
    756                 elseif ( $is_ssl && extension_loaded('openssl') && function_exists( 'fsockopen' ) )
    757                         $use = true;
    758                 else
    759                         $use = false;
     753                $allowed_schemes = array( 'http', 'https' );
    760754
    761                 return apply_filters('use_fsockopen_transport', $use, $args);
     755                // check if the requested scheme is allowed
     756                $use = in_array( $scheme, $allowed_schemes );
     757
     758                // check if fsockopen has been disabled for 12 hours
     759                if ( $use )
     760                        $use = ( $option = get_option( 'disable_fsockopen', 0 ) ) && time() - $option < 43200; // 43200 = 12 hours
     761
     762                // check if there is a function named fsockopen
     763                if ( $use )
     764                        $use = function_exists( 'fsockopen' );
     765
     766                // check if openssl is available for SSL transports
     767                if  ( $use && $is_ssl )
     768                        $use = extension_loaded( 'openssl' );
     769
     770                return apply_filters('use_fsockopen_transport', $use, $args, $url);
    762771        }
    763772}
    764773
     
    929938         *
    930939         * @return boolean False means this class can not be used, true means it can.
    931940         */
    932         function test($args = array()) {
    933                 if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) )
    934                         return false;
     941        function test( $args = array(), $url = '' ) {
     942                $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
    935943
    936                 return apply_filters('use_streams_transport', true, $args);
     944                $scheme = empty($url) ? 'http' : strtolower( parse_url( $url, PHP_URL_SCHEME ) );
     945
     946                $allowed_schemes = array( 'http', 'https' );
     947
     948                // check if the requested scheme is allowed
     949                $use = in_array( $scheme, $allowed_schemes );
     950
     951                // check if the fopen function exists
     952                if ( $use )
     953                        $use = function_exists( 'fopen' );
     954
     955                // check if url fopen is allowed
     956                if ( $use )
     957                        $use = function_exists( 'ini_get' ) && ini_get( 'allow_url_fopen' );
     958
     959                // check if requested scheme has a stream wrapper
     960                if ( $use )
     961                        $use = in_array( $scheme, stream_get_wrappers() );
     962
     963                // check specifically against openssl extension
     964                if ( $use && $is_ssl )
     965                        $use = extension_loaded( 'openssl' );
     966
     967                // check if streams actually support ssl
     968                if ( $use && $is_ssl )
     969                        $use = in_array( 'ssl', stream_get_transports() );
     970
     971                return (bool) apply_filters( 'use_streams_transport', $use, $args, $url );
    937972        }
    938973}
    939974
     
    10961131         *
    10971132         * @return boolean False means this class can not be used, true means it can.
    10981133         */
    1099         function test($args = array()) {
    1100                 return apply_filters('use_http_extension_transport', function_exists('http_request'), $args );
     1134        function test($args = array(), $url = null) {
     1135
     1136                $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
     1137
     1138                $scheme = empty( $url ) ? 'http' : strtolower( parse_url( $url, PHP_URL_SCHEME ) );
     1139
     1140                $allowed_schemes = array( 'http', 'https' );
     1141
     1142                // check if the requested scheme is allowed
     1143                $use = in_array( $scheme, $allowed_schemes );
     1144
     1145                // check if there is a function named curl_init
     1146                if ( $use )
     1147                        $use = function_exists( 'http_request' );
     1148
     1149                return (bool) apply_filters( 'use_http_extension_transport', $use, $args, $url );
    11011150        }
    11021151}
    11031152
     
    13121361         *
    13131362         * @return boolean False means this class can not be used, true means it can.
    13141363         */
    1315         function test($args = array()) {
    1316                 if ( function_exists('curl_init') && function_exists('curl_exec') )
    1317                         return apply_filters('use_curl_transport', true, $args);
     1364        function test($args = array(), $url = null) {
    13181365
    1319                 return false;
     1366                $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
     1367
     1368                $scheme = empty( $url ) ? 'http' : strtolower( parse_url( $url, PHP_URL_SCHEME ) );
     1369
     1370                $allowed_schemes = array( 'http', 'https' );
     1371
     1372                // check if the requested scheme is allowed
     1373                $use = in_array( $scheme, $allowed_schemes );
     1374
     1375                // check if there is a function named curl_init
     1376                if ( $use )
     1377                        $use = function_exists( 'curl_init' );
     1378
     1379                // check if there is a function named curl_exec
     1380                if ( $use )
     1381                        $use = function_exists( 'curl_exec' );
     1382
     1383                // check if openssl is available for SSL transports
     1384                if  ( $use && $is_ssl )
     1385                        $use = extension_loaded( 'openssl' );
     1386
     1387                return (bool) apply_filters( 'use_curl_transport', $use, $args, $url );
    13201388        }
    13211389}
    13221390