File tree Expand file tree Collapse file tree 3 files changed +19
-5
lines changed
Expand file tree Collapse file tree 3 files changed +19
-5
lines changed Original file line number Diff line number Diff line change @@ -537,6 +537,8 @@ def _stop_accept_futures(self):
537537 self ._accept_futures .clear ()
538538
539539 def _stop_serving (self , sock ):
540- self ._stop_accept_futures ()
540+ future = self ._accept_futures .pop (sock .fileno (), None )
541+ if future :
542+ future .cancel ()
541543 self ._proactor ._stop_serving (sock )
542544 sock .close ()
Original file line number Diff line number Diff line change @@ -557,10 +557,21 @@ def test_create_server_cancel(self):
557557 self .assertTrue (self .sock .close .called )
558558
559559 def test_stop_serving (self ):
560- sock = mock .Mock ()
561- self .loop ._stop_serving (sock )
562- self .assertTrue (sock .close .called )
563- self .proactor ._stop_serving .assert_called_with (sock )
560+ sock1 = mock .Mock ()
561+ future1 = mock .Mock ()
562+ sock2 = mock .Mock ()
563+ future2 = mock .Mock ()
564+ self .loop ._accept_futures = {
565+ sock1 .fileno (): future1 ,
566+ sock2 .fileno (): future2
567+ }
568+
569+ self .loop ._stop_serving (sock1 )
570+ self .assertTrue (sock1 .close .called )
571+ self .assertTrue (future1 .cancel .called )
572+ self .proactor ._stop_serving .assert_called_with (sock1 )
573+ self .assertFalse (sock2 .close .called )
574+ self .assertFalse (future2 .cancel .called )
564575
565576
566577if __name__ == '__main__' :
Original file line number Diff line number Diff line change 1+ Fix ``stop_serving `` in asyncio proactor loop kill all listening servers
You can’t perform that action at this time.
0 commit comments