WordPress.org

Make WordPress Core

Ticket #16606: 16606.5.diff

File 16606.5.diff, 3.8 KB (added by mdawaffe, 7 years ago)
  • wp-includes/class-http.php

     
    746746         * @return boolean False means this class can not be used, true means it can.
    747747         */
    748748        function test( $args = array() ) {
    749                 if ( false !== ($option = get_option( 'disable_fsockopen' )) && time()-$option < 43200 ) // 12 hours
     749                // Doesn't exist
     750                if ( !function_exists( 'fsockopen' ) )
    750751                        return false;
    751752
    752                 $is_ssl = isset($args['ssl']) && $args['ssl'];
     753                // We disabled fsockopen because it's too slow
     754                if ( false !== ( $option = get_option( 'disable_fsockopen' ) ) && time() - $option < 43200 ) // 12 hours
     755                        return false;
    753756
    754                 if ( ! $is_ssl && function_exists( 'fsockopen' ) )
     757                if ( isset( $args['ssl'] ) && $args['ssl'] ) {
     758                        // We need SSL.  Check if it's available.
     759                        $use = extension_loaded( 'openssl' );
     760                } else {
     761                        // No SSL needed
    755762                        $use = true;
    756                 elseif ( $is_ssl && extension_loaded('openssl') && function_exists( 'fsockopen' ) )
    757                         $use = true;
    758                 else
    759                         $use = false;
     763                }
    760764
    761                 return apply_filters('use_fsockopen_transport', $use, $args);
     765                return apply_filters( 'use_fsockopen_transport', $use, $args );
    762766        }
    763767}
    764768
     
    929933         *
    930934         * @return boolean False means this class can not be used, true means it can.
    931935         */
    932         function test($args = array()) {
    933                 if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) )
     936        function test( $args = array() ) {
     937                // Doesn't exist
     938                if ( !function_exists( 'fopen' ) || ( function_exists( 'ini_get' ) && !ini_get( 'allow_url_fopen' ) ) )
    934939                        return false;
    935940
    936                 return apply_filters('use_streams_transport', true, $args);
     941                if ( isset( $args['ssl'] ) && $args['ssl'] ) {
     942                        // We need SSL.  Check if it's available.
     943                        $use = extension_loaded( 'openssl' );
     944                } else {
     945                        // No SSL needed
     946                        $use = true;
     947                }
     948
     949                return apply_filters( 'use_streams_transport', $use, $args );
    937950        }
    938951}
    939952
     
    10961109         *
    10971110         * @return boolean False means this class can not be used, true means it can.
    10981111         */
    1099         function test($args = array()) {
    1100                 return apply_filters('use_http_extension_transport', function_exists('http_request'), $args );
     1112        function test( $args = array() ) {
     1113                // Doesn't exist
     1114                if ( !function_exists( 'http_request' ) )
     1115                        return false;
     1116
     1117                if ( isset( $args['ssl'] ) && $args['ssl'] ) {
     1118                        // We need SSL.  Check if it's available.
     1119                        if ( is_callable( 'curl_version' ) && $curl_version = curl_version() ) {
     1120                                // The HTTP Extensions is ultimately cURL based.  See if we can detect the cURL SSL capability.
     1121                                $use = CURL_VERSION_SSL & $curl_version['features']; // bitwise
     1122                        } else {
     1123                                $use = extension_loaded( 'openssl' );
     1124                        }
     1125                } else {
     1126                        // No SSL needed
     1127                        $use = true;
     1128                }
     1129
     1130                return apply_filters( 'use_http_extension_transport', (bool) $use, $args );
    11011131        }
    11021132}
    11031133
     
    13121342         *
    13131343         * @return boolean False means this class can not be used, true means it can.
    13141344         */
    1315         function test($args = array()) {
    1316                 if ( function_exists('curl_init') && function_exists('curl_exec') )
    1317                         return apply_filters('use_curl_transport', true, $args);
     1345        function test( $args = array() ) {
     1346                // Doesn't exist
     1347                if ( !function_exists( 'curl_init' ) || !function_exists( 'curl_exec' ) )
     1348                        return false;
    13181349
    1319                 return false;
     1350                if ( isset( $args['ssl'] ) && $args['ssl'] ) {
     1351                        // We need SSL.  Check if it's available.
     1352                        if ( is_callable( 'curl_version' ) && $curl_version = curl_version() ) {
     1353                                $use = CURL_VERSION_SSL & $curl_version['features']; // bitwise
     1354                        } else {
     1355                                $use = extension_loaded( 'openssl' );
     1356                        }
     1357                } else {
     1358                        // No SSL needed
     1359                        $use = true;
     1360                }
     1361
     1362                return apply_filters( 'use_curl_transport', (bool) $use, $args );
    13201363        }
    13211364}
    13221365