]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Fix a case where callbacks could be called more than once in error conditions.
authorBen Darnell <ben@bendarnell.com>
Sat, 19 Feb 2011 21:58:56 +0000 (13:58 -0800)
committerBen Darnell <ben@bendarnell.com>
Sat, 19 Feb 2011 21:58:56 +0000 (13:58 -0800)
tornado/simple_httpclient.py

index 7320f257ceebb49e2613d3e2695075f023c28aa2..fbeb7086200280e1735c8bf7e829521f98cf68c6 100644 (file)
@@ -240,15 +240,16 @@ class _HTTPConnection(object):
         except Exception, e:
             logging.warning("uncaught exception", exc_info=True)
             if self.callback is not None:
-                self.callback(HTTPResponse(self.request, 599, error=e))
+                callback = self.callback
                 self.callback = None
+                callback(HTTPResponse(self.request, 599, error=e))
 
     def _on_close(self):
         if self.callback is not None:
-            self.callback(HTTPResponse(self.request, 599,
-                                       error=HTTPError(599, 
-                                                       "Connection closed")))
+            callback = self.callback
             self.callback = None
+            callback(HTTPResponse(self.request, 599,
+                                  error=HTTPError(599, "Connection closed")))
 
     def _on_headers(self, data):
         first_line, _, header_data = data.partition("\r\n")