@@ -581,7 +581,7 @@ def __init__(self, loop, sock, protocol, waiter=None,
581
581
self ._loop .add_reader (self ._sock_fd , self ._read_ready )
582
582
self ._loop .call_soon (self ._protocol .connection_made , self )
583
583
if waiter is not None :
584
- # wait until protocol. connection_made() has been called
584
+ # only wake up the waiter when connection_made() has been called
585
585
self ._loop .call_soon (waiter ._set_result_unless_cancelled , None )
586
586
587
587
def pause_reading (self ):
@@ -732,6 +732,16 @@ def __init__(self, loop, rawsock, protocol, sslcontext, waiter=None,
732
732
start_time = None
733
733
self ._on_handshake (start_time )
734
734
735
+ def _wakeup_waiter (self , exc = None ):
736
+ if self ._waiter is None :
737
+ return
738
+ if not self ._waiter .cancelled ():
739
+ if exc is not None :
740
+ self ._waiter .set_exception (exc )
741
+ else :
742
+ self ._waiter .set_result (None )
743
+ self ._waiter = None
744
+
735
745
def _on_handshake (self , start_time ):
736
746
try :
737
747
self ._sock .do_handshake ()
@@ -750,8 +760,7 @@ def _on_handshake(self, start_time):
750
760
self ._loop .remove_reader (self ._sock_fd )
751
761
self ._loop .remove_writer (self ._sock_fd )
752
762
self ._sock .close ()
753
- if self ._waiter is not None and not self ._waiter .cancelled ():
754
- self ._waiter .set_exception (exc )
763
+ self ._wakeup_waiter (exc )
755
764
if isinstance (exc , Exception ):
756
765
return
757
766
else :
@@ -774,9 +783,7 @@ def _on_handshake(self, start_time):
774
783
"on matching the hostname" ,
775
784
self , exc_info = True )
776
785
self ._sock .close ()
777
- if (self ._waiter is not None
778
- and not self ._waiter .cancelled ()):
779
- self ._waiter .set_exception (exc )
786
+ self ._wakeup_waiter (exc )
780
787
return
781
788
782
789
# Add extra info that becomes available after handshake.
@@ -789,10 +796,8 @@ def _on_handshake(self, start_time):
789
796
self ._write_wants_read = False
790
797
self ._loop .add_reader (self ._sock_fd , self ._read_ready )
791
798
self ._loop .call_soon (self ._protocol .connection_made , self )
792
- if self ._waiter is not None :
793
- # wait until protocol.connection_made() has been called
794
- self ._loop .call_soon (self ._waiter ._set_result_unless_cancelled ,
795
- None )
799
+ # only wake up the waiter when connection_made() has been called
800
+ self ._loop .call_soon (self ._wakeup_waiter )
796
801
797
802
if self ._loop .get_debug ():
798
803
dt = self ._loop .time () - start_time
@@ -924,7 +929,7 @@ def __init__(self, loop, sock, protocol, address=None,
924
929
self ._loop .add_reader (self ._sock_fd , self ._read_ready )
925
930
self ._loop .call_soon (self ._protocol .connection_made , self )
926
931
if waiter is not None :
927
- # wait until protocol. connection_made() has been called
932
+ # only wake up the waiter when connection_made() has been called
928
933
self ._loop .call_soon (waiter ._set_result_unless_cancelled , None )
929
934
930
935
def get_write_buffer_size (self ):
0 commit comments