diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2019-02-20 11:35:52 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-20 11:35:52 +0000 |
commit | c88bc5390341162951fa4afc6b4a0644a30293dc (patch) | |
tree | 95ac52940edc6aa6df57aee735392521aaf7acb3 /synapse/http/client.py | |
parent | Clean up gitignores (#4688) (diff) | |
download | synapse-c88bc5390341162951fa4afc6b4a0644a30293dc.tar.xz |
Fix TaskStopped exceptions when outbound requests time out (#4690)
Diffstat (limited to 'synapse/http/client.py')
-rw-r--r-- | synapse/http/client.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/synapse/http/client.py b/synapse/http/client.py index 47a1f82ff0..ad454f4964 100644 --- a/synapse/http/client.py +++ b/synapse/http/client.py @@ -15,6 +15,7 @@ # limitations under the License. import logging +from io import BytesIO from six import text_type from six.moves import urllib @@ -39,7 +40,11 @@ from twisted.web.http import PotentialDataLoss from twisted.web.http_headers import Headers from synapse.api.errors import Codes, HttpResponseException, SynapseError -from synapse.http import cancelled_to_request_timed_out_error, redact_uri +from synapse.http import ( + QuieterFileBodyProducer, + cancelled_to_request_timed_out_error, + redact_uri, +) from synapse.util.async_helpers import timeout_deferred from synapse.util.caches import CACHE_SIZE_FACTOR from synapse.util.logcontext import make_deferred_yieldable @@ -246,7 +251,7 @@ class SimpleHttpClient(object): ) @defer.inlineCallbacks - def request(self, method, uri, data=b'', headers=None): + def request(self, method, uri, data=None, headers=None): """ Args: method (str): HTTP method to use. @@ -265,11 +270,15 @@ class SimpleHttpClient(object): logger.info("Sending request %s %s", method, redact_uri(uri)) try: + body_producer = None + if data is not None: + body_producer = QuieterFileBodyProducer(BytesIO(data)) + request_deferred = treq.request( method, uri, agent=self.agent, - data=data, + data=body_producer, headers=headers, **self._extra_treq_args ) |