]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Timeouts in SimpleAsyncHTTPClient now raise HTTPError 527/head
authorAlek Storm <alek.storm@gmail.com>
Sun, 3 Jun 2012 19:14:55 +0000 (15:14 -0400)
committerAlek Storm <alek.storm@gmail.com>
Sun, 3 Jun 2012 19:14:55 +0000 (15:14 -0400)
Previously, they ran the callbacks themselves.

tornado/simple_httpclient.py

index 80b3fb052ce91fb4d508afbf76ca4230bba650f0..fc1ca38e9e9fd18c1526fbf5cbf7e985500cec67 100644 (file)
@@ -221,7 +221,7 @@ class _HTTPConnection(object):
             if timeout:
                 self._timeout = self.io_loop.add_timeout(
                     self.start_time + timeout,
-                    self._on_timeout)
+                    stack_context.wrap(self._on_timeout))
             self.stream.set_close_callback(self._on_close)
             self.stream.connect(sockaddr,
                                 functools.partial(self._on_connect, parsed,
@@ -229,10 +229,8 @@ class _HTTPConnection(object):
 
     def _on_timeout(self):
         self._timeout = None
-        self._run_callback(HTTPResponse(self.request, 599,
-                                        request_time=time.time() - self.start_time,
-                                        error=HTTPError(599, "Timeout")))
-        self.stream.close()
+        if self.final_callback is not None:
+            raise HTTPError(599, "Timeout")
 
     def _on_connect(self, parsed, parsed_hostname):
         if self._timeout is not None:
@@ -241,7 +239,7 @@ class _HTTPConnection(object):
         if self.request.request_timeout:
             self._timeout = self.io_loop.add_timeout(
                 self.start_time + self.request.request_timeout,
-                self._on_timeout)
+                stack_context.wrap(self._on_timeout))
         if (self.request.validate_cert and
             isinstance(self.stream, SSLIOStream)):
             match_hostname(self.stream.socket.getpeercert(),
@@ -330,10 +328,8 @@ class _HTTPConnection(object):
                 self.stream.close()
 
     def _on_close(self):
-        self._run_callback(HTTPResponse(
-                self.request, 599,
-                request_time=time.time() - self.start_time,
-                error=HTTPError(599, "Connection closed")))
+        if self.final_callback is not None:
+            raise HTTPError(599, "Connection closed")
 
     def _on_headers(self, data):
         data = native_str(data.decode("latin1"))