WordPress.org

Make WordPress Core

Ticket #16855: 16855

File 16855, 2.2 KB (added by hakre, 4 years ago)

plus 'followlocation' for WP HTTP Stream Transport

Line 
1### Eclipse Workspace Patch 1.0
2#P wordpress-trunk
3Index: wp-includes/class-http.php
4===================================================================
5--- wp-includes/class-http.php  (revision 17521)
6+++ wp-includes/class-http.php  (working copy)
7@@ -981,7 +981,8 @@
8        function request($url, $args = array()) {
9                $defaults = array(
10                        'method' => 'GET', 'timeout' => 5,
11-                       'redirection' => 5, 'httpversion' => '1.0',
12+                       'redirection' => 5, 'followlocation' => true,
13+                       'httpversion' => '1.0',
14                        'blocking' => true,
15                        'headers' => array(), 'body' => null, 'cookies' => array()
16                );
17@@ -1027,6 +1028,7 @@
18                                'method' => strtoupper($r['method']),
19                                'user_agent' => $r['user-agent'],
20                                'max_redirects' => $r['redirection'] + 1, // See #11557
21+                               'follow_location' => (int) $r['followlocation'],
22                                'protocol_version' => (float) $r['httpversion'],
23                                'header' => $strHeaders,
24                                'ignore_errors' => true, // Return non-200 requests.
25@@ -1304,8 +1306,8 @@
26        function request($url, $args = array()) {
27                $defaults = array(
28                        'method' => 'GET', 'timeout' => 5,
29-                       'redirection' => 5, 'httpversion' => '1.0',
30-                       'blocking' => true,
31+                       'redirection' => 5, 'followlocation' => !(ini_get('safe_mode') || ini_get('open_basedir')),
32+                       'httpversion' => '1.0', 'blocking' => true,
33                        'headers' => array(), 'body' => null, 'cookies' => array()
34                );
35 
36@@ -1367,6 +1369,7 @@
37                curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
38                curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
39                curl_setopt( $handle, CURLOPT_MAXREDIRS, $r['redirection'] );
40+               curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, $r['followlocation'] );
41 
42                switch ( $r['method'] ) {
43                        case 'HEAD':
44@@ -1448,7 +1451,7 @@
45                curl_close( $handle );
46 
47                // See #11305 - When running under safe mode, redirection is disabled above. Handle it manually.
48-               if ( !empty($theHeaders['headers']['location']) && (ini_get('safe_mode') || ini_get('open_basedir')) ) {
49+               if ( $r['followlocation'] && !empty($theHeaders['headers']['location']) && (ini_get('safe_mode') || ini_get('open_basedir')) ) {
50                        if ( $r['redirection']-- > 0 ) {
51                                return $this->request($theHeaders['headers']['location'], $r);
52                        } else {