Open
Description
Bug report
Bug description:
In earlier versions of Python all the way to 3.13, it would not allow a server to listen on a port that has already been used, and rightfully so.
$ python -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
# Trying to start the second server on the same port
$ python -m http.server 8000
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/usr/lib/python3.11/http/server.py", line 1309, in <module>
test(
File "/usr/lib/python3.11/http/server.py", line 1256, in test
with ServerClass(addr, HandlerClass) as httpd:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/socketserver.py", line 456, in __init__
self.server_bind()
File "/usr/lib/python3.11/http/server.py", line 1303, in server_bind
return super().server_bind()
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/http/server.py", line 136, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.11/socketserver.py", line 472, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
But in Python 3.14.0a2, the second command would also start a server without exception. Is that expected?
CPython versions tested on:
3.14
Operating systems tested on:
Linux