mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
							parent
							
								
									ce9e625445
								
							
						
					
					
						commit
						ea2ef5d0ca
					
				
					 4 changed files with 15 additions and 6 deletions
				
			
		|  | @ -293,11 +293,10 @@ def feed_appdata(self, data, offset=0): | |||
| class _SSLProtocolTransport(transports._FlowControlMixin, | ||||
|                             transports.Transport): | ||||
| 
 | ||||
|     def __init__(self, loop, ssl_protocol, app_protocol): | ||||
|     def __init__(self, loop, ssl_protocol): | ||||
|         self._loop = loop | ||||
|         # SSLProtocol instance | ||||
|         self._ssl_protocol = ssl_protocol | ||||
|         self._app_protocol = app_protocol | ||||
|         self._closed = False | ||||
| 
 | ||||
|     def get_extra_info(self, name, default=None): | ||||
|  | @ -305,10 +304,10 @@ def get_extra_info(self, name, default=None): | |||
|         return self._ssl_protocol._get_extra_info(name, default) | ||||
| 
 | ||||
|     def set_protocol(self, protocol): | ||||
|         self._app_protocol = protocol | ||||
|         self._ssl_protocol._app_protocol = protocol | ||||
| 
 | ||||
|     def get_protocol(self): | ||||
|         return self._app_protocol | ||||
|         return self._ssl_protocol._app_protocol | ||||
| 
 | ||||
|     def is_closing(self): | ||||
|         return self._closed | ||||
|  | @ -431,8 +430,7 @@ def __init__(self, loop, app_protocol, sslcontext, waiter, | |||
|         self._waiter = waiter | ||||
|         self._loop = loop | ||||
|         self._app_protocol = app_protocol | ||||
|         self._app_transport = _SSLProtocolTransport(self._loop, | ||||
|                                                     self, self._app_protocol) | ||||
|         self._app_transport = _SSLProtocolTransport(self._loop, self) | ||||
|         # _SSLPipe instance (None until the connection is made) | ||||
|         self._sslpipe = None | ||||
|         self._session_established = False | ||||
|  |  | |||
|  | @ -121,6 +121,14 @@ def test_get_extra_info_on_closed_connection(self): | |||
|         ssl_proto.connection_lost(None) | ||||
|         self.assertIsNone(ssl_proto._get_extra_info('socket')) | ||||
| 
 | ||||
|     def test_set_new_app_protocol(self): | ||||
|         waiter = asyncio.Future(loop=self.loop) | ||||
|         ssl_proto = self.ssl_protocol(waiter) | ||||
|         new_app_proto = asyncio.Protocol() | ||||
|         ssl_proto._app_transport.set_protocol(new_app_proto) | ||||
|         self.assertIs(ssl_proto._app_transport.get_protocol(), new_app_proto) | ||||
|         self.assertIs(ssl_proto._app_protocol, new_app_proto) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|  |  | |||
|  | @ -858,6 +858,7 @@ Vladimir Kushnir | |||
| Erno Kuusela | ||||
| Ross Lagerwall | ||||
| Cameron Laird | ||||
| Loïc Lajeanne | ||||
| David Lam | ||||
| Thomas Lamb | ||||
| Valerie Lambert | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| Fix method set_protocol() of class _SSLProtocolTransport in asyncio module. | ||||
| This method was previously modifying a wrong reference to the protocol. | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 jlacoline
						jlacoline