Include list of connected clients in server desync logs
Save full date including fractional part in NetworkClientInfo
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user