make sure we return the correct error with the last traceback.

fix #630
This commit is contained in:
benoitc 2014-03-08 18:00:50 -08:00
parent 41e7aba3a9
commit 0e4d9f0378
2 changed files with 11 additions and 3 deletions

View File

@ -7,6 +7,7 @@ from datetime import datetime
import errno import errno
import socket import socket
import ssl import ssl
import sys
import gunicorn.http as http import gunicorn.http as http
import gunicorn.http.wsgi as wsgi import gunicorn.http.wsgi as wsgi
@ -48,9 +49,13 @@ class AsyncWorker(base.Worker):
except StopIteration as e: except StopIteration as e:
self.log.debug("Closing connection. %s", e) self.log.debug("Closing connection. %s", e)
except ssl.SSLError: except ssl.SSLError:
raise # pass to next try-except level exc_info = sys.exc_info()
# pass to next try-except level
six.reraise(exc_info[0], exc_info[1], exc_info[2])
except socket.error: except socket.error:
raise # pass to next try-except level exc_info = sys.exc_info()
# pass to next try-except level
six.reraise(exc_info[0], exc_info[1], exc_info[2])
except Exception as e: except Exception as e:
self.handle_error(req, client, addr, e) self.handle_error(req, client, addr, e)
except ssl.SSLError as e: except ssl.SSLError as e:

View File

@ -10,6 +10,7 @@ import os
import select import select
import socket import socket
import ssl import ssl
import sys
import gunicorn.http as http import gunicorn.http as http
import gunicorn.http.wsgi as wsgi import gunicorn.http.wsgi as wsgi
@ -144,7 +145,9 @@ class SyncWorker(base.Worker):
if hasattr(respiter, "close"): if hasattr(respiter, "close"):
respiter.close() respiter.close()
except socket.error: except socket.error:
raise exc_info = sys.exc_info()
# pass to next try-except level
six.reraise(exc_info[0], exc_info[1], exc_info[2])
except Exception: except Exception:
if resp and resp.headers_sent: if resp and resp.headers_sent:
# If the requests have already been sent, we should close the # If the requests have already been sent, we should close the