From 88ccfdb981b181087b442fc25877489c019a0679 Mon Sep 17 00:00:00 2001 From: Randall Leeds Date: Thu, 6 Feb 2014 19:32:10 -0800 Subject: [PATCH] Clean up some inconsistent in error handling It is more DRY to let the exception here bubble. --- gunicorn/workers/sync.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/gunicorn/workers/sync.py b/gunicorn/workers/sync.py index 39ce7262..9a3ba90b 100644 --- a/gunicorn/workers/sync.py +++ b/gunicorn/workers/sync.py @@ -102,10 +102,13 @@ class SyncWorker(base.Worker): self.log.debug("Error processing SSL request.") self.handle_error(req, client, addr, e) except socket.error as e: - if e.args[0] != errno.EPIPE: - self.log.exception("Error processing request.") + if e.args[0] not in (errno.EPIPE, errno.ECONNRESET): + self.log.exception("Socket error processing request.") else: - self.log.debug("Ignoring EPIPE") + if e.args[0] == errno.ECONNRESET: + self.log.debug("Ignoring connection reset") + else: + self.log.debug("Ignoring EPIPE") except Exception as e: self.handle_error(req, client, addr, e) finally: @@ -142,7 +145,7 @@ class SyncWorker(base.Worker): respiter.close() except socket.error: raise - except Exception as e: + except Exception: if resp and resp.headers_sent: # If the requests have already been sent, we should close the # connection to indicate the error. @@ -153,9 +156,7 @@ class SyncWorker(base.Worker): except socket.error: pass raise StopIteration() - # Only send back traceback in HTTP in debug mode. - self.handle_error(req, client, addr, e) - return + raise finally: try: self.cfg.post_request(self, req, environ, resp)