|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|