File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -284,7 +284,11 @@ def run(self) -> None:
284284 for fileno , event in events :
285285 # New Connection
286286 if fileno == fd_server :
287- con , _ = self ._server .accept ()
287+ try :
288+ con , _ = self ._server .accept ()
289+ except OSError as err :
290+ _LOGGER .warning ("Accept failed: %s" , err )
291+ continue
288292 con .setblocking (False )
289293
290294 self ._poller .register (
Original file line number Diff line number Diff line change @@ -52,6 +52,30 @@ async def test_snitun_single_runner_updown() -> None:
5252 await server .stop ()
5353
5454
55+ def test_snitun_worker_runner_accept_exception (
56+ caplog : pytest .LogCaptureFixture ,
57+ event_loop : asyncio .AbstractEventLoop ,
58+ ) -> None :
59+ """Test SniTunWorker Server handles accept() exception."""
60+ server = SniTunServerWorker (
61+ FERNET_TOKENS ,
62+ host = "127.0.0.1" ,
63+ port = 32003 ,
64+ worker_size = 2 ,
65+ )
66+
67+ server .start ()
68+ with patch ("socket.socket.accept" , side_effect = OSError ("BOOM!" )):
69+ sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
70+ sock .connect (("127.0.0.1" , 32003 ))
71+ sock .close ()
72+
73+ time .sleep (0.1 )
74+
75+ assert "Accept failed: BOOM!" in caplog .text
76+ server .stop ()
77+
78+
5579def test_snitun_worker_runner_updown (event_loop : asyncio .AbstractEventLoop ) -> None :
5680 """Test SniTun Worker Server runner object."""
5781 server = SniTunServerWorker (
You can’t perform that action at this time.
0 commit comments