MCPcopy
hub / github.com/benoitc/gunicorn / handle_error

Method handle_error

gunicorn/workers/base.py:200–283  ·  view source on GitHub ↗
(self, req, client, addr, exc)

Source from the content-addressed store, hash-verified

198 sys.exit(1)
199
200 def handle_error(self, req, client, addr, exc):
201 request_start = datetime.now()
202 addr = addr or ('', -1) # unix socket case
203 if isinstance(exc, (
204 InvalidRequestLine, InvalidRequestMethod,
205 InvalidHTTPVersion, InvalidHeader, InvalidHeaderName,
206 LimitRequestLine, LimitRequestHeaders,
207 InvalidProxyLine, ForbiddenProxyRequest,
208 InvalidSchemeHeaders, UnsupportedTransferCoding,
209 ConfigurationProblem, ObsoleteFolding, ExpectationFailed,
210 SSLError,
211 )):
212
213 status_int = 400
214 reason = "Bad Request"
215
216 if isinstance(exc, InvalidRequestLine):
217 mesg = "Invalid Request Line '%s'" % str(exc)
218 elif isinstance(exc, InvalidRequestMethod):
219 mesg = "Invalid Method '%s'" % str(exc)
220 elif isinstance(exc, InvalidHTTPVersion):
221 mesg = "Invalid HTTP Version '%s'" % str(exc)
222 elif isinstance(exc, UnsupportedTransferCoding):
223 mesg = "%s" % str(exc)
224 status_int = 501
225 elif isinstance(exc, ConfigurationProblem):
226 mesg = "%s" % str(exc)
227 status_int = 500
228 elif isinstance(exc, ObsoleteFolding):
229 mesg = "%s" % str(exc)
230 elif isinstance(exc, (InvalidHeaderName, InvalidHeader,)):
231 mesg = "%s" % str(exc)
232 if not req and hasattr(exc, "req"):
233 req = exc.req # for access log
234 elif isinstance(exc, LimitRequestLine):
235 mesg = "%s" % str(exc)
236 elif isinstance(exc, ExpectationFailed):
237 reason = "Expectation Failed"
238 mesg = str(exc)
239 status_int = 417
240 elif isinstance(exc, LimitRequestHeaders):
241 reason = "Request Header Fields Too Large"
242 mesg = "Error parsing headers: '%s'" % str(exc)
243 status_int = 431
244 elif isinstance(exc, InvalidProxyLine):
245 mesg = "'%s'" % str(exc)
246 elif isinstance(exc, ForbiddenProxyRequest):
247 reason = "Forbidden"
248 mesg = "Request forbidden"
249 status_int = 403
250 elif isinstance(exc, InvalidSchemeHeaders):
251 mesg = "%s" % str(exc)
252 elif isinstance(exc, SSLError):
253 reason = "Forbidden"
254 mesg = "'%s'" % str(exc)
255 status_int = 403
256
257 msg = "Invalid request from ip={ip}: {error}"

Callers 3

handleMethod · 0.80
handleMethod · 0.80
handleMethod · 0.80

Calls 7

default_environFunction · 0.90
ResponseClass · 0.90
nowMethod · 0.80
warningMethod · 0.45
exceptionMethod · 0.45
accessMethod · 0.45
debugMethod · 0.45

Tested by

no test coverage detected