diff --git a/synapse/http/matrixfederationclient.py b/synapse/http/matrixfederationclient.py
index fdc1e2678e..74e523960f 100644
--- a/synapse/http/matrixfederationclient.py
+++ b/synapse/http/matrixfederationclient.py
@@ -22,7 +22,7 @@ from twisted.web._newclient import ResponseDone
from synapse.http.agent_name import AGENT_NAME
from synapse.http.endpoint import matrix_federation_endpoint
-from synapse.util.async import sleep, time_bound_deferred
+from synapse.util.async import sleep
from synapse.util.logcontext import PreserveLoggingContext
from syutil.jsonutil import encode_canonical_json
@@ -129,9 +129,8 @@ class MatrixFederationHttpClient(object):
producer
)
- response = yield time_bound_deferred(
+ response = yield self.clock.time_bound_deferred(
request_deferred,
- clock=self.clock,
time_out=60,
)
diff --git a/synapse/util/__init__.py b/synapse/util/__init__.py
index 4e837a918e..2da8dfa719 100644
--- a/synapse/util/__init__.py
+++ b/synapse/util/__init__.py
@@ -15,7 +15,7 @@
from synapse.util.logcontext import LoggingContext
-from twisted.internet import reactor
+from twisted.internet import defer, reactor
import time
@@ -45,3 +45,22 @@ class Clock(object):
def cancel_call_later(self, timer):
timer.cancel()
+
+ def time_bound_deferred(self, given_deferred, time_out):
+ ret_deferred = defer.Deferred()
+
+ def timed_out():
+ if not given_deferred.called:
+ given_deferred.cancel()
+ ret_deferred.errback(RuntimeError("Timed out"))
+
+ timer = self.call_later(time_out, timed_out)
+
+ def succeed(result):
+ self.cancel_call_later(timer)
+ ret_deferred.callback(result)
+
+ given_deferred.addCallback(succeed)
+ given_deferred.addErrback(ret_deferred.errback)
+
+ return ret_deferred
diff --git a/synapse/util/async.py b/synapse/util/async.py
index d4d1d4b472..c4fe5d522f 100644
--- a/synapse/util/async.py
+++ b/synapse/util/async.py
@@ -32,23 +32,3 @@ def run_on_reactor():
iteration of the main loop
"""
return sleep(0)
-
-
-def time_bound_deferred(given_deferred, clock, time_out):
- ret_deferred = defer.Deferred()
-
- def timed_out():
- if not given_deferred.called:
- given_deferred.cancel()
- ret_deferred.errback(RuntimeError("Timed out"))
-
- timer = clock.call_later(time_out, timed_out)
-
- def succeed(result):
- clock.cancel_call_later(timer)
- ret_deferred.callback(result)
-
- given_deferred.addCallback(succeed)
- given_deferred.addErrback(ret_deferred.errback)
-
- return ret_deferred
|