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):
536
536
self ._accept_futures .clear ()
537
537
538
538
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 ()
540
542
self ._proactor ._stop_serving (sock )
541
543
sock .close ()
Original file line number Diff line number Diff line change @@ -567,10 +567,21 @@ def test_create_server_cancel(self):
567
567
self .assertTrue (self .sock .close .called )
568
568
569
569
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 )
574
585
575
586
576
587
if __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