diff options
author | Bert JW Regeer <bertjw@regeer.org> | 2023-01-22 21:15:47 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-22 21:15:47 -0700 |
commit | c00713b67f602e127fba76bb0fc9d32098c42a54 (patch) | |
tree | a82a595065aa2545e957e0fc99ba40e028b623b5 | |
parent | 1b364016772a1a0a3e48a9847a035876bce1e75f (diff) | |
parent | 5903d585617683da4a1e8005b7f2d7f9b385e26b (diff) | |
download | waitress-c00713b67f602e127fba76bb0fc9d32098c42a54.tar.gz |
Merge pull request #399 from Pylons/bugfix/move-socket-options-setting-into-try-except
Setting socket options may fail if remote has already disappeared
-rw-r--r-- | src/waitress/server.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/waitress/server.py b/src/waitress/server.py index 0378d48..bbb6819 100644 --- a/src/waitress/server.py +++ b/src/waitress/server.py @@ -305,15 +305,19 @@ class BaseWSGIServer(wasyncore.dispatcher): if v is None: return conn, addr = v + self.set_socket_options(conn) except OSError: # Linux: On rare occasions we get a bogus socket back from # accept. socketmodule.c:makesockaddr complains that the # address family is unknown. We don't want the whole server # to shut down because of this. + # macOS: On occasions when the remote has already closed the socket + # before we got around to accepting it, when we try to set the + # socket options it will fail. So instead just we log the error and + # continue if self.adj.log_socket_errors: self.logger.warning("server accept() threw an exception", exc_info=True) return - self.set_socket_options(conn) addr = self.fix_addr(addr) self.channel_class(self, conn, addr, self.adj, map=self._map) |