New submission from Michael Rich <richmr2...@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 <rep...@bugs.python.org> <https://bugs.python.org/issue41135> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com