]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Configure a default timeout for HTTP connections at 60s
authorMikael Nordfeldth <mmn@hethane.se>
Sun, 9 Jul 2017 18:07:18 +0000 (20:07 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Sun, 9 Jul 2017 18:28:22 +0000 (20:28 +0200)
No requests we do externally should ever take more than 60 seconds. This
could probably be changed for downloading video or whatever for any cache
plugins that want to store data locally, but in general I think even 60s
is way longer than I expect any outgoing requests should take.

This affects everything using HTTPClient, our helper class, and thus all
hub pings, subscription requests, etc. etc.

The value, afaik, includes connect_timeout and if it takes 10 seconds to
establish a connection only 50 seconds is available to transfer data.

lib/default.php
lib/httpclient.php

index 90bca32c4f4aeaba7e50041a8e3134d15196a412..b1079a907ce90ed52c2601bebd6624ea2ce15596 100644 (file)
@@ -393,6 +393,7 @@ $default =
               'ssl_verify_host' => true,    // HTTPRequest2 makes sure this is set to CURLOPT_SSL_VERIFYHOST==2 if using curl
               'curl' => false, // Use CURL backend for HTTP fetches if available. (If not, PHP's socket streams will be used.)
               'connect_timeout' => 5,
+              'timeout' => 60,
               'proxy_host' => null,
               'proxy_port' => null,
               'proxy_user' => null,
index 04a365274d3e5cf1bf778322f68923aacda09232..4891ff6440183b042ad8da20ed01b2739f44fa91 100644 (file)
@@ -116,6 +116,16 @@ class HTTPClient extends HTTP_Request2
 
     function __construct($url=null, $method=self::METHOD_GET, $config=array())
     {
+        if (is_int(common_config('http', 'timeout'))) {
+            // Reasonably you shouldn't set http/timeout to 0 because of 
+            // malicious remote servers that can cause infinitely long 
+            // responses... But the default in HTTP_Request2 is 0 for 
+            // some reason and should probably be considered a valid value.
+            $this->config['timeout'] = common_config('http', 'timeout');
+            common_debug('Using HTTPClient timeout value of '._ve($this->config['timeout']));
+        } else {
+            common_log(LOG_ERR, 'config option http/timeout is not an integer value: '._ve(common_config('http', 'timeout')));
+        }
         $this->config['connect_timeout'] = common_config('http', 'connect_timeout') ?: $this->config['connect_timeout'];
         $this->config['max_redirs'] = 10;
         $this->config['follow_redirects'] = true;