mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 14:02:46 +00:00 
			
		
		
		
	LibTLS: "Properly" handle the server dropping the connection
Contrary to popular belief, not every implementation of TLS follows the specs. Some of them just drop the connection without sending a proper close_notify, and we should handle that gracefully.
This commit is contained in:
		
							parent
							
								
									8aeccf4f02
								
							
						
					
					
						commit
						b028a123b8
					
				
					 3 changed files with 42 additions and 30 deletions
				
			
		|  | @ -113,7 +113,7 @@ bool TLSv12::common_connect(const struct sockaddr* saddr, socklen_t length) | |||
| 
 | ||||
|     Core::Socket::on_connected = [this] { | ||||
|         Core::Socket::on_ready_to_read = [this] { | ||||
|             if (!Core::Socket::is_open()) { | ||||
|             if (!Core::Socket::is_open() || !Core::Socket::is_connected() || Core::Socket::eof()) { | ||||
|                 // an abrupt closure (the server is a jerk)
 | ||||
|                 dbg() << "Socket not open, assuming abrupt closure"; | ||||
|                 m_context.connection_finished = true; | ||||
|  | @ -143,7 +143,7 @@ bool TLSv12::common_connect(const struct sockaddr* saddr, socklen_t length) | |||
|                     on_tls_ready_to_read(*this); | ||||
|         }; | ||||
|         Core::Socket::on_ready_to_write = [this] { | ||||
|             if (!Core::Socket::is_open()) { | ||||
|             if (!Core::Socket::is_open() || !Core::Socket::is_connected() || Core::Socket::eof()) { | ||||
|                 // an abrupt closure (the server is a jerk)
 | ||||
|                 dbg() << "Socket not open, assuming abrupt closure"; | ||||
|                 m_context.connection_finished = true; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 AnotherTest
						AnotherTest