Skip to content

Commit 2fd6299

Browse files
committed
Enable SO_REUSEADDR whenever it's available
This is a minimal change compared to #84. Closes #83
1 parent d8f9a72 commit 2fd6299

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

adafruit_httpserver/server.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -197,11 +197,15 @@ def serve_forever(
197197

198198
def _set_socket_level_to_reuse_address(self) -> None:
199199
"""
200-
Only for CPython, prevents "Address already in use" error when restarting the server.
200+
On systems that have SO_REUSEADDR, prevents "Address already in use"
201+
error when restarting the server.
201202
"""
202-
self._sock.setsockopt(
203-
self._socket_source.SOL_SOCKET, self._socket_source.SO_REUSEADDR, 1
204-
)
203+
try:
204+
self._sock.setsockopt(
205+
self._socket_source.SOL_SOCKET, self._socket_source.SO_REUSEADDR, 1
206+
)
207+
except AttributeError:
208+
pass
205209

206210
def start(self, host: str, port: int = 80) -> None:
207211
"""
@@ -220,8 +224,7 @@ def start(self, host: str, port: int = 80) -> None:
220224
self._socket_source.AF_INET, self._socket_source.SOCK_STREAM
221225
)
222226

223-
if implementation.name != "circuitpython":
224-
self._set_socket_level_to_reuse_address()
227+
self._set_socket_level_to_reuse_address()
225228

226229
self._sock.bind((host, port))
227230
self._sock.listen(10)

0 commit comments

Comments
 (0)