Commit 232178c4 authored by Jason Madden's avatar Jason Madden Committed by GitHub

Merge pull request #1000 from gevent/issue999

Extract list of ignored exceptions in pywsgi to an ivar. Include errno.WSAECONNABORTED on Windows.
parents 4d060427 e913b3f6
......@@ -34,6 +34,10 @@
support in certain tools (setuptools v24.2.1 or newer is required).
See :issue:`995`.
- pywgi also catches and ignores by default
:const:`errno.WSAECONNABORTED` on Windows. Initial patch in
:pr:`999` by Jan van Valburg.
1.2.2 (2017-06-05)
==================
......
......@@ -921,7 +921,33 @@ class WSGIHandler(object):
close = None
self.result = None
#: These errors are silently ignored by :meth:`handle_one_response` to avoid producing
#: excess log entries on normal operating conditions. They indicate
#: a remote client has disconnected and there is little or nothing
#: this process can be expected to do about it. You may change this
#: value in a subclass.
#:
#: The default value includes :data:`errno.EPIPE` and :data:`errno.ECONNRESET`.
#: On Windows this also includes :data:`errno.WSAECONNABORTED`.
#:
#: This is a provisional API, subject to change. See :pr:`377`, :pr:`999`
#: and :issue:`136`.
#:
#: .. versionadded:: 1.3
ignored_socket_errors = (errno.EPIPE, errno.ECONNRESET)
try:
ignored_socket_errors += (errno.WSAECONNABORTED,)
except AttributeError:
pass # Not windows
def handle_one_response(self):
"""
Invoke the application to produce one response.
This is called by :meth:`handle_one_request` after all the
state for the request has been established. It is responsible
for error handling.
"""
self.time_start = time.time()
self.status = None
self.headers_sent = False
......@@ -946,12 +972,8 @@ class WSGIHandler(object):
except _InvalidClientInput:
self._send_error_response_if_possible(400)
except socket.error as ex:
if ex.args[0] in (errno.EPIPE, errno.ECONNRESET):
# Broken pipe, connection reset by peer.
# Swallow these silently to avoid spewing
# useless info on normal operating conditions,
# bloating logfiles. See https://github.com/gevent/gevent/pull/377
# and https://github.com/gevent/gevent/issues/136.
if ex.args[0] in self.ignored_socket_errors:
# See description of self.ignored_socket_errors.
if not PY3:
sys.exc_clear()
self.close_connection = True
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment