Fix: update server as offline when unexpected disconnect during refresh (#11891)
(cherry picked from commit 2bbc95cac3)
			
			
This commit is contained in:
		 Patric Stout
					Patric Stout
				
			
				
					committed by
					
						 Jonathan G Rennison
						Jonathan G Rennison
					
				
			
			
				
	
			
			
			 Jonathan G Rennison
						Jonathan G Rennison
					
				
			
						parent
						
							2e42a23a7e
						
					
				
				
					commit
					63dc0a4f5e
				
			| @@ -12,6 +12,7 @@ | |||||||
| #include "network_query.h" | #include "network_query.h" | ||||||
| #include "network_gamelist.h" | #include "network_gamelist.h" | ||||||
| #include "../error.h" | #include "../error.h" | ||||||
|  | #include "../debug_fmt.h" | ||||||
|  |  | ||||||
| #include "table/strings.h" | #include "table/strings.h" | ||||||
|  |  | ||||||
| @@ -24,6 +25,15 @@ NetworkRecvStatus QueryNetworkGameSocketHandler::CloseConnection(NetworkRecvStat | |||||||
| 	assert(status != NETWORK_RECV_STATUS_OKAY); | 	assert(status != NETWORK_RECV_STATUS_OKAY); | ||||||
| 	assert(this->sock != INVALID_SOCKET); | 	assert(this->sock != INVALID_SOCKET); | ||||||
|  |  | ||||||
|  | 	/* Connection is closed, but we never received a packet. Must be offline. */ | ||||||
|  | 	NetworkGameList *item = NetworkGameListAddItem(this->connection_string); | ||||||
|  | 	if (item->refreshing) { | ||||||
|  | 		item->status = NGLS_OFFLINE; | ||||||
|  | 		item->refreshing = false; | ||||||
|  |  | ||||||
|  | 		UpdateNetworkGameWindow(); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	return status; | 	return status; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -36,6 +46,7 @@ bool QueryNetworkGameSocketHandler::CheckConnection() | |||||||
|  |  | ||||||
| 	/* If there was no response in 5 seconds, terminate the query. */ | 	/* If there was no response in 5 seconds, terminate the query. */ | ||||||
| 	if (lag > std::chrono::seconds(5)) { | 	if (lag > std::chrono::seconds(5)) { | ||||||
|  | 		Debug(net, 0, "Timeout while waiting for response from {}", this->connection_string); | ||||||
| 		this->CloseConnection(NETWORK_RECV_STATUS_CONNECTION_LOST); | 		this->CloseConnection(NETWORK_RECV_STATUS_CONNECTION_LOST); | ||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user