WordPress.org

Make WordPress Core

Ticket #9072: 9072.diff

File 9072.diff, 2.4 KB (added by jacobsantos, 9 years ago)

Uses stream_socket_client instead of fopen.

  • http.php

     
    963963                if ( false === $arrURL )
    964964                        return new WP_Error('http_request_failed', sprintf(__('Malformed URL: %s'), $url));
    965965
    966                 if ( 'http' != $arrURL['scheme'] && 'https' != $arrURL['scheme'] )
     966                if ( 'http' != $arrURL['scheme'] && 'https' != $arrURL['scheme'] && 'ssl' != $arrURL['scheme'] )
    967967                        $url = str_replace($arrURL['scheme'], 'http', $url);
    968968
     969                // stream_socket_client accepts ssl protocol for SSL.
     970                $url = str_replace('https://', 'ssl://', $url);
     971
    969972                // Convert Header array to string.
    970973                $strHeaders = '';
    971974                if ( is_array( $r['headers'] ) )
     
    983986                                'header' => $strHeaders,
    984987                                'timeout' => $r['timeout'],
    985988                                'ssl' => array(
    986                                         'verify_peer' => apply_filters('https_ssl_verify', $r['sslverify']),
    987                                         'verify_host' => apply_filters('https_ssl_verify', $r['sslverify'])
    988                                 )
     989                                                'verify_peer' => apply_filters('https_ssl_verify', $r['sslverify']),
     990                                                'verify_host' => apply_filters('https_ssl_verify', $r['sslverify'])
     991                                )
    989992                        )
    990993                );
    991994
     
    995998                $context = stream_context_create($arrContext);
    996999
    9971000                if ( ! defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) )
    998                         $handle = @fopen($url, 'r', false, $context);
     1001                        $handle = @stream_socket_client($url, $errorNum, $errorStr, $r['timeout'], STREAM_CLIENT_CONNECT, $context);
    9991002                else
    1000                         $handle = fopen($url, 'r', false, $context);
     1003                        $handle = stream_socket_client($url, $errorNum, $errorStr, $r['timeout'], STREAM_CLIENT_CONNECT, $context);
    10011004
    1002                 if ( ! $handle)
    1003                         return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $url));
     1005                if ( ! $handle )
     1006                        return new WP_Error('http_request_failed', sprintf(__('HTTP socket error %d: %s for %s'), $errorNum, $errorStr, $url));
    10041007
    10051008                // WordPress supports PHP 4.3, which has this function. Removed sanity
    10061009                // checking for performance reasons.
     
    10421045         * @return boolean False means this class can not be used, true means it can.
    10431046         */
    10441047        function test() {
    1045                 if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) )
     1048                if ( ! function_exists('stream_socket_client') )
    10461049                        return false;
    10471050
    10481051                if ( version_compare(PHP_VERSION, '5.0', '<') )