From: WEI Zhicheng Date: Thu, 7 Aug 2014 17:49:39 +0000 (+0800) Subject: Fix `IOStream' when callback function return `Future' and has X-Git-Tag: v4.1.0b1~114^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1142%2Fhead;p=thirdparty%2Ftornado.git Fix `IOStream' when callback function return `Future' and has `Exception' will silence ignore --- diff --git a/tornado/iostream.py b/tornado/iostream.py index 059e4e93f..3726a768e 100644 --- a/tornado/iostream.py +++ b/tornado/iostream.py @@ -505,7 +505,7 @@ class BaseIOStream(object): def wrapper(): self._pending_callbacks -= 1 try: - callback(*args) + return callback(*args) except Exception: app_log.error("Uncaught exception, closing connection.", exc_info=True) @@ -517,7 +517,8 @@ class BaseIOStream(object): # Re-raise the exception so that IOLoop.handle_callback_exception # can see it and log the error raise - self._maybe_add_error_listener() + finally: + self._maybe_add_error_listener() # We schedule callbacks to be run on the next IOLoop iteration # rather than running them directly for several reasons: # * Prevents unbounded stack growth when a callback calls an