fetch-from-remote doesn’t work with some websites
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Jan 2017 06:50:16 +0000 (06:50 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Jan 2017 06:50:16 +0000 (06:50 +0000)
https://bugs.webkit.org/show_bug.cgi?id=166963

Reviewed by Yusuke Suzuki.

Apparently file_get_contents is not compatible with some SSL/TLS connections.
Use curl_* functions to access remote servers instead.

* public/admin/fetch-from-remote.php:
(fetch_remote):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210625 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Websites/perf.webkit.org/ChangeLog
Websites/perf.webkit.org/public/admin/fetch-from-remote.php

index 9982208..ec0ddac 100644 (file)
@@ -1,3 +1,16 @@
+2017-01-11  Ryosuke Niwa  <rniwa@webkit.org>
+
+        fetch-from-remote doesn’t work with some websites
+        https://bugs.webkit.org/show_bug.cgi?id=166963
+
+        Reviewed by Yusuke Suzuki.
+
+        Apparently file_get_contents is not compatible with some SSL/TLS connections.
+        Use curl_* functions to access remote servers instead.
+
+        * public/admin/fetch-from-remote.php:
+        (fetch_remote):
+
 2017-01-10  Ryosuke Niwa  <rniwa@webkit.org>
 
         Another build fix. Always use UTC when expressing commit times in UNIX-epoch timestamps.
index 13a571b..1b0452c 100644 (file)
@@ -33,9 +33,18 @@ function fetch_remote($remote_server, $remote_url)
     if ($auth)
         $header = 'Authorization: Basic ' . base64_encode($auth['username'] . ':' . $auth['password']);
 
-    $context = stream_context_create(array('http' => array('method' => 'GET', 'header' => $header)));
+    $channel = curl_init();
+    curl_setopt($channel, CURLOPT_URL, $remote_url);
+    if ($auth) {
+        curl_setopt($channel, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
+        curl_setopt($channel, CURLOPT_USERPWD, $auth['username'] . ':' . $auth['password']);
+    }
+    curl_setopt($channel, CURLOPT_HEADER, FALSE);
+    curl_setopt($channel, CURLOPT_RETURNTRANSFER, TRUE);
+    $content = curl_exec($channel);
+    curl_close($channel);
 
-    return @file_get_contents($remote_url, false, $context);
+    return $content;
 }
 
 main(array_get($_SERVER, 'REQUEST_URI', ''));