Merge pull request #1231 from benoitc/fix/gh1177

prevent crash when reporting an error
This commit is contained in:
Benoit Chesneau 2016-03-22 13:07:30 +01:00
commit 7be2b8d2ba

View File

@ -5,12 +5,12 @@
from datetime import datetime from datetime import datetime
import os import os
from random import randint
import signal import signal
from ssl import SSLError
import sys import sys
import time import time
import traceback import traceback
from random import randint
from gunicorn import util from gunicorn import util
from gunicorn.workers.workertmp import WorkerTmp from gunicorn.workers.workertmp import WorkerTmp
@ -188,7 +188,8 @@ class Worker(object):
if isinstance(exc, (InvalidRequestLine, InvalidRequestMethod, if isinstance(exc, (InvalidRequestLine, InvalidRequestMethod,
InvalidHTTPVersion, InvalidHeader, InvalidHeaderName, InvalidHTTPVersion, InvalidHeader, InvalidHeaderName,
LimitRequestLine, LimitRequestHeaders, LimitRequestLine, LimitRequestHeaders,
InvalidProxyLine, ForbiddenProxyRequest)): InvalidProxyLine, ForbiddenProxyRequest,
SSLError)):
status_int = 400 status_int = 400
reason = "Bad Request" reason = "Bad Request"
@ -213,12 +214,16 @@ class Worker(object):
reason = "Forbidden" reason = "Forbidden"
mesg = "Request forbidden" mesg = "Request forbidden"
status_int = 403 status_int = 403
elif isinstance(exc, SSLError):
reason = "Forbidden"
mesg = "'%s'" % str(exc)
status_int = 403
msg = "Invalid request from ip={ip}: {error}" msg = "Invalid request from ip={ip}: {error}"
self.log.debug(msg.format(ip=addr[0], error=str(exc))) self.log.debug(msg.format(ip=addr[0], error=str(exc)))
else: else:
self.log.exception("Error handling request %s", req.uri) if hasattr(req, "uri"):
self.log.exception("Error handling request %s", req.uri)
status_int = 500 status_int = 500
reason = "Internal Server Error" reason = "Internal Server Error"
mesg = "" mesg = ""