summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2023-01-22 21:15:47 -0700
committerGitHub <noreply@github.com>2023-01-22 21:15:47 -0700
commitc00713b67f602e127fba76bb0fc9d32098c42a54 (patch)
treea82a595065aa2545e957e0fc99ba40e028b623b5
parent1b364016772a1a0a3e48a9847a035876bce1e75f (diff)
parent5903d585617683da4a1e8005b7f2d7f9b385e26b (diff)
downloadwaitress-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.py6
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)