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_gamelist.h" | ||||
| #include "../error.h" | ||||
| #include "../debug_fmt.h" | ||||
|  | ||||
| #include "table/strings.h" | ||||
|  | ||||
| @@ -24,6 +25,15 @@ NetworkRecvStatus QueryNetworkGameSocketHandler::CloseConnection(NetworkRecvStat | ||||
| 	assert(status != NETWORK_RECV_STATUS_OKAY); | ||||
| 	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; | ||||
| } | ||||
|  | ||||
| @@ -36,6 +46,7 @@ bool QueryNetworkGameSocketHandler::CheckConnection() | ||||
|  | ||||
| 	/* If there was no response in 5 seconds, terminate the query. */ | ||||
| 	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); | ||||
| 		return false; | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user