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");
|
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;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,6 +26,8 @@ struct NetworkClientInfo : NetworkClientInfoPool::PoolItem<&_networkclientinfo_p
|
|||||||
std::string client_name; ///< Name of the client
|
std::string client_name; ///< Name of the client
|
||||||
CompanyID client_playas; ///< As which company is this client playing (CompanyID)
|
CompanyID client_playas; ///< As which company is this client playing (CompanyID)
|
||||||
Date join_date; ///< Gamedate the client has joined
|
Date join_date; ///< Gamedate the client has joined
|
||||||
|
DateFract join_date_fract;
|
||||||
|
uint8 join_tick_skip_counter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new client.
|
* Create a new client.
|
||||||
|
@@ -937,6 +937,8 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p)
|
|||||||
NetworkClientInfo *ci = new NetworkClientInfo(this->client_id);
|
NetworkClientInfo *ci = new NetworkClientInfo(this->client_id);
|
||||||
this->SetInfo(ci);
|
this->SetInfo(ci);
|
||||||
ci->join_date = _date;
|
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_name = client_name;
|
||||||
ci->client_playas = playas;
|
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);
|
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);
|
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