Make WordPress Core


Ignore:
Timestamp:
05/11/2021 07:40:41 PM (4 years ago)
Author:
desrosj
Message:

External Libraries: Update the Requests library to version 1.8.0.

While some of the changes in the 1.8.0 release have already been copied to WordPress Core in earlier releases (see [38727], [46258], [47902] and [49382]), this release contains additional improvements, including:

  • A significant performance fix when using cURL.
  • Improved compliance with RFC2616.

The library has also been moved under the WordPress project’s GitHub organization and can now be found at https://github.com/WordPress/Requests.

Props jrf, dd32, rmccue, justinahinon, netweb, schlessera, TimothyBJacobs, soulseekah, ozh, skithund, carlalexander, travisnorthcutt, desrosj.
Fixes #53101.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/Requests/Transport/fsockopen.php

    r46586 r50842  
    6363            throw new Requests_Exception('Invalid URL.', 'invalidurl', $url);
    6464        }
    65         $host = $url_parts['host'];
    66         $context = stream_context_create();
    67         $verifyname = false;
     65        $host                     = $url_parts['host'];
     66        $context                  = stream_context_create();
     67        $verifyname               = false;
    6868        $case_insensitive_headers = new Requests_Utility_CaseInsensitiveDictionary($headers);
    6969
     
    7676
    7777            $context_options = array(
    78                 'verify_peer' => true,
    79                 // 'CN_match' => $host,
    80                 'capture_peer_cert' => true
     78                'verify_peer'       => true,
     79                'capture_peer_cert' => true,
    8180            );
    82             $verifyname = true;
     81            $verifyname      = true;
    8382
    8483            // SNI, if enabled (OpenSSL >=0.9.8j)
     84            // phpcs:ignore PHPCompatibility.Constants.NewConstants.openssl_tlsext_server_nameFound
    8585            if (defined('OPENSSL_TLSEXT_SERVER_NAME') && OPENSSL_TLSEXT_SERVER_NAME) {
    8686                $context_options['SNI_enabled'] = true;
     
    9292            if (isset($options['verify'])) {
    9393                if ($options['verify'] === false) {
    94                     $context_options['verify_peer'] = false;
     94                    $context_options['verify_peer']      = false;
     95                    $context_options['verify_peer_name'] = false;
     96                    $verifyname                          = false;
    9597                }
    9698                elseif (is_string($options['verify'])) {
     
    101103            if (isset($options['verifyname']) && $options['verifyname'] === false) {
    102104                $context_options['verify_peer_name'] = false;
    103                 $verifyname = false;
     105                $verifyname                          = false;
    104106            }
    105107
     
    117119        $remote_socket .= ':' . $url_parts['port'];
    118120
     121        // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_set_error_handler
    119122        set_error_handler(array($this, 'connect_error_handler'), E_WARNING | E_NOTICE);
    120123
     
    151154
    152155        $request_body = '';
    153         $out = sprintf("%s %s HTTP/%.1F\r\n", $options['type'], $path, $options['protocol_version']);
     156        $out          = sprintf("%s %s HTTP/%.1F\r\n", $options['type'], $path, $options['protocol_version']);
    154157
    155158        if ($options['type'] !== Requests::TRACE) {
    156159            if (is_array($data)) {
    157                 $request_body = http_build_query($data, null, '&');
     160                $request_body = http_build_query($data, '', '&');
    158161            }
    159162            else {
     
    161164            }
    162165
    163             if (!empty($data)) {
     166            // Always include Content-length on POST requests to prevent
     167            // 411 errors from some servers when the body is empty.
     168            if (!empty($data) || $options['type'] === Requests::POST) {
    164169                if (!isset($case_insensitive_headers['Content-Length'])) {
    165170                    $headers['Content-Length'] = strlen($request_body);
     
    175180            $out .= sprintf('Host: %s', $url_parts['host']);
    176181
    177             if (( 'http' === strtolower($url_parts['scheme']) && $url_parts['port'] !== 80 ) || ( 'https' === strtolower($url_parts['scheme']) && $url_parts['port'] !== 443 )) {
     182            if ((strtolower($url_parts['scheme']) === 'http' && $url_parts['port'] !== 80) || (strtolower($url_parts['scheme']) === 'https' && $url_parts['port'] !== 443)) {
    178183                $out .= ':' . $url_parts['port'];
    179184            }
     
    221226
    222227        $timeout_sec = (int) floor($options['timeout']);
    223         if ($timeout_sec == $options['timeout']) {
     228        if ($timeout_sec === $options['timeout']) {
    224229            $timeout_msec = 0;
    225230        }
     
    229234        stream_set_timeout($socket, $timeout_sec, $timeout_msec);
    230235
    231         $response = $body = $headers = '';
     236        $response   = '';
     237        $body       = '';
     238        $headers    = '';
    232239        $this->info = stream_get_meta_data($socket);
    233         $size = 0;
    234         $doingbody = false;
    235         $download = false;
     240        $size       = 0;
     241        $doingbody  = false;
     242        $download   = false;
    236243        if ($options['filename']) {
    237244            $download = fopen($options['filename'], 'wb');
     
    249256                if (strpos($response, "\r\n\r\n")) {
    250257                    list($headers, $block) = explode("\r\n\r\n", $response, 2);
    251                     $doingbody = true;
     258                    $doingbody             = true;
    252259                }
    253260            }
     
    265272                        // Limit the length
    266273                        $limited_length = ($this->max_bytes - $size);
    267                         $block = substr($block, 0, $limited_length);
     274                        $block          = substr($block, 0, $limited_length);
    268275                    }
    269276                }
     
    301308    public function request_multiple($requests, $options) {
    302309        $responses = array();
    303         $class = get_class($this);
     310        $class     = get_class($this);
    304311        foreach ($requests as $id => $request) {
    305312            try {
    306                 $handler = new $class();
     313                $handler        = new $class();
    307314                $responses[$id] = $handler->request($request['url'], $request['headers'], $request['data'], $request['options']);
    308315
     
    354361            }
    355362
    356             $url_parts['query'] .= '&' . http_build_query($data, null, '&');
    357             $url_parts['query'] = trim($url_parts['query'], '&');
     363            $url_parts['query'] .= '&' . http_build_query($data, '', '&');
     364            $url_parts['query']  = trim($url_parts['query'], '&');
    358365        }
    359366        if (isset($url_parts['path'])) {
Note: See TracChangeset for help on using the changeset viewer.