[New-bugs-announce] [issue41135] Suggested change to http.server.HTTPServer to prevent socket reuse in Windows
Michael Rich
report at bugs.python.org
Sat Jun 27 00:21:05 EDT 2020
New submission from Michael Rich <richmr2174 at gmail.com>:
Hi, a web server can be incorrectly bound to an already in-use socket when binding a HTTPServer on windows. The issue is discussed here: https://stackoverflow.com/questions/51090637/running-a-python-web-server-twice-on-the-same-port-on-windows-no-port-already
This only happens on Windows. In *nix the socketserver will throw an error, on Windows it will not. However the most recently bound server will not receive the requests.
I suggest the following code (taken from stackoverflow) at the start of the server_bind method:
if hasattr(socket, 'SO_EXCLUSIVEADDRUSE'):
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1)
# Also need to change the value of allow_reuse_address (defined in http.server.HTTPServer)
HTTPServer.allow_reuse_address = 0
I have tested this and it will throw an error upon reuse in Windows and does not change *nix behavior.
Thanks,
Mike
----------
components: Library (Lib)
messages: 372451
nosy: Michael Rich
priority: normal
severity: normal
status: open
title: Suggested change to http.server.HTTPServer to prevent socket reuse in Windows
type: behavior
versions: Python 3.8
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue41135>
_______________________________________
More information about the New-bugs-announce
mailing list