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):
537
537
self ._accept_futures .clear ()
538
538
539
539
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 ()
541
543
self ._proactor ._stop_serving (sock )
542
544
sock .close ()
Original file line number Diff line number Diff line change @@ -557,10 +557,21 @@ def test_create_server_cancel(self):
557
557
self .assertTrue (self .sock .close .called )
558
558
559
559
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 )
564
575
565
576
566
577
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