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 @@ -536,6 +536,8 @@ def _stop_accept_futures(self):
536536 self ._accept_futures .clear ()
537537
538538 def _stop_serving (self , sock ):
539- self ._stop_accept_futures ()
539+ future = self ._accept_futures .pop (sock .fileno (), None )
540+ if future :
541+ future .cancel ()
540542 self ._proactor ._stop_serving (sock )
541543 sock .close ()
Original file line number Diff line number Diff line change @@ -567,10 +567,21 @@ def test_create_server_cancel(self):
567567 self .assertTrue (self .sock .close .called )
568568
569569 def test_stop_serving (self ):
570- sock = mock .Mock ()
571- self .loop ._stop_serving (sock )
572- self .assertTrue (sock .close .called )
573- self .proactor ._stop_serving .assert_called_with (sock )
570+ sock1 = mock .Mock ()
571+ future1 = mock .Mock ()
572+ sock2 = mock .Mock ()
573+ future2 = mock .Mock ()
574+ self .loop ._accept_futures = {
575+ sock1 .fileno (): future1 ,
576+ sock2 .fileno (): future2
577+ }
578+
579+ self .loop ._stop_serving (sock1 )
580+ self .assertTrue (sock1 .close .called )
581+ self .assertTrue (future1 .cancel .called )
582+ self .proactor ._stop_serving .assert_called_with (sock1 )
583+ self .assertFalse (sock2 .close .called )
584+ self .assertFalse (future2 .cancel .called )
574585
575586
576587if __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