(svn r19648) -Fix [FS#3760]: a client would not be properly moved when moved while joining, e.g. when entering a company's password. This caused the client to be in the wrong company (according to the rest of the clients) and the client being kicked on the first command

This commit is contained in:
rubidium
2010-04-17 10:52:26 +00:00
parent 751b3f334f
commit 21cc1b1079

View File

@@ -453,6 +453,8 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_CLIENT_INFO)
if (MY_CLIENT->HasClientQuit()) return NETWORK_RECV_STATUS_CONN_LOST;
if (!Company::IsValidID(playas)) playas = COMPANY_SPECTATOR;
ci = NetworkFindClientInfoFromClientID(client_id);
if (ci != NULL) {
if (playas == ci->client_playas && strcmp(name, ci->client_name) != 0) {
@@ -463,6 +465,10 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_CLIENT_INFO)
* Do not display that for now */
}
/* Make sure we're in the company the server tells us to be in,
* for the rare case that we get moved while joining. */
if (client_id == _network_own_client_id) SetLocalCompany(playas);
ci->client_playas = playas;
strecpy(ci->client_name, name, lastof(ci->client_name));