Include list of connected clients in server desync logs

Save full date including fractional part in NetworkClientInfo
pull/444/head
Jonathan G Rennison 2 years ago
parent dd16df976c
commit d2526780be

@ -262,6 +262,13 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const
buffer += seprintf(buffer, last, "\n");
}
if (_network_server) {
extern char *NetworkServerDumpClients(char *buffer, const char *last);
buffer += seprintf(buffer, last, "Clients:\n");
buffer = NetworkServerDumpClients(buffer, last);
buffer += seprintf(buffer, last, "\n");
}
return buffer;
}

@ -26,6 +26,8 @@ struct NetworkClientInfo : NetworkClientInfoPool::PoolItem<&_networkclientinfo_p
std::string client_name; ///< Name of the client
CompanyID client_playas; ///< As which company is this client playing (CompanyID)
Date join_date; ///< Gamedate the client has joined
DateFract join_date_fract;
uint8 join_tick_skip_counter;
/**
* Create a new client.

@ -937,6 +937,8 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p)
NetworkClientInfo *ci = new NetworkClientInfo(this->client_id);
this->SetInfo(ci);
ci->join_date = _date;
ci->join_date_fract = _date_fract;
ci->join_tick_skip_counter = _tick_skip_counter;
ci->client_name = client_name;
ci->client_playas = playas;
DEBUG(desync, 1, "client: date{%08x; %02x; %02x}; client: %02x; company: %02x", _date, _date_fract, _tick_skip_counter, (int)ci->index, (int)ci->client_playas);
@ -2277,3 +2279,23 @@ void NetworkServerNewCompany(const Company *c, NetworkClientInfo *ci)
NetworkServerSendChat(NETWORK_ACTION_COMPANY_NEW, DESTTYPE_BROADCAST, 0, "", ci->client_id, c->index + 1);
}
}
char *NetworkServerDumpClients(char *buffer, const char *last)
{
for (NetworkClientInfo *ci : NetworkClientInfo::Iterate()) {
YearMonthDay ymd;
ConvertDateToYMD(ci->join_date, &ymd);
buffer += seprintf(buffer, last, " #%d: name: '%s', company: %u",
ci->client_id,
ci->client_name.c_str(),
ci->client_playas);
if (ci->join_date != 0) {
YearMonthDay ymd;
ConvertDateToYMD(ci->join_date, &ymd);
buffer += seprintf(buffer, last, ", joined: %4i-%02i-%02i, %2i, %3i",
ymd.year, ymd.month + 1, ymd.day, ci->join_date_fract, ci->join_tick_skip_counter);
}
buffer += seprintf(buffer, last, "\n");
}
return buffer;
}

Loading…
Cancel
Save