Compare commits

...

1 commit

Author SHA1 Message Date
2fd62996ec Enable SO_REUSEADDR whenever it's available
This is a minimal change compared to #84.

Closes #83
2024-02-21 18:49:34 -06:00

View file

@ -197,11 +197,15 @@ class Server: # pylint: disable=too-many-instance-attributes
def _set_socket_level_to_reuse_address(self) -> None: def _set_socket_level_to_reuse_address(self) -> None:
""" """
Only for CPython, prevents "Address already in use" error when restarting the server. On systems that have SO_REUSEADDR, prevents "Address already in use"
error when restarting the server.
""" """
self._sock.setsockopt( try:
self._socket_source.SOL_SOCKET, self._socket_source.SO_REUSEADDR, 1 self._sock.setsockopt(
) self._socket_source.SOL_SOCKET, self._socket_source.SO_REUSEADDR, 1
)
except AttributeError:
pass
def start(self, host: str, port: int = 80) -> None: def start(self, host: str, port: int = 80) -> None:
""" """
@ -220,8 +224,7 @@ class Server: # pylint: disable=too-many-instance-attributes
self._socket_source.AF_INET, self._socket_source.SOCK_STREAM self._socket_source.AF_INET, self._socket_source.SOCK_STREAM
) )
if implementation.name != "circuitpython": self._set_socket_level_to_reuse_address()
self._set_socket_level_to_reuse_address()
self._sock.bind((host, port)) self._sock.bind((host, port))
self._sock.listen(10) self._sock.listen(10)