File tree Expand file tree Collapse file tree 3 files changed +18
-1
lines changed Expand file tree Collapse file tree 3 files changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -543,8 +543,10 @@ def eof_received(self):
543
543
def _get_extra_info (self , name , default = None ):
544
544
if name in self ._extra :
545
545
return self ._extra [name ]
546
- else :
546
+ elif self . _transport is not None :
547
547
return self ._transport .get_extra_info (name , default )
548
+ else :
549
+ return default
548
550
549
551
def _start_shutdown (self ):
550
552
if self ._in_shutdown :
Original file line number Diff line number Diff line change @@ -95,5 +95,17 @@ def test_connection_lost(self):
95
95
test_utils .run_briefly (self .loop )
96
96
self .assertIsInstance (waiter .exception (), ConnectionAbortedError )
97
97
98
+ def test_get_extra_info_on_closed_connection (self ):
99
+ waiter = asyncio .Future (loop = self .loop )
100
+ ssl_proto = self .ssl_protocol (waiter )
101
+ self .assertIsNone (ssl_proto ._get_extra_info ('socket' ))
102
+ default = object ()
103
+ self .assertIs (ssl_proto ._get_extra_info ('socket' , default ), default )
104
+ self .connection_made (ssl_proto )
105
+ self .assertIsNotNone (ssl_proto ._get_extra_info ('socket' ))
106
+ ssl_proto .connection_lost (None )
107
+ self .assertIsNone (ssl_proto ._get_extra_info ('socket' ))
108
+
109
+
98
110
if __name__ == '__main__' :
99
111
unittest .main ()
Original file line number Diff line number Diff line change @@ -26,6 +26,9 @@ Core and Builtins
26
26
Library
27
27
-------
28
28
29
+ - bpo-29742: get_extra_info() raises exception if get called on closed ssl transport.
30
+ Patch by Nikolay Kim.
31
+
29
32
- bpo-8256: Fixed possible failing or crashing input() if attributes "encoding"
30
33
or "errors" of sys.stdin or sys.stdout are not set or are not strings.
31
34
You can’t perform that action at this time.
0 commit comments