WordPress.org

Make WordPress Core

Ticket #9072: 9072.diff

File 9072.diff, 2.4 KB (added by jacobsantos, 5 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', '<') )