Fix: update server as offline when unexpected disconnect during refresh (#11891)
(cherry picked from commit 2bbc95cac3
)
This commit is contained in:

committed by
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