- if (strcmp(host_client->name, newName) && host_client->name[0] && strcmp(host_client->name, "unconnected"))
- SV_BroadcastPrintf("%s changed name to %s\n", host_client->name, newName);
- strcpy(host_client->name, newName);
- strcpy(host_client->old_name, newName);
- if (sv_player)
- sv_player->v->netname = PR_SetString(host_client->name);
- //Con_Printf("Host_Name_f: host_client->edict->netname = %s, sv_player->netname = %s, host_client->name = %s\n", PR_GetString(host_client->edict->v->netname), PR_GetString(sv_player->v->netname), host_client->name);
-
-// send notification to all clients
-
- MSG_WriteByte(&sv.reliable_datagram, svc_updatename);
- MSG_WriteByte(&sv.reliable_datagram, host_client->number);
- MSG_WriteString(&sv.reliable_datagram, host_client->name);
+ // point the string back at updateclient->name to keep it safe
+ strlcpy (host_client->name, newName, sizeof (host_client->name));
+ host_client->edict->v->netname = PR_SetString(host_client->name);
+ if (strcmp(host_client->old_name, host_client->name))
+ {
+ if (host_client->spawned)
+ SV_BroadcastPrintf("%s changed name to %s\n", host_client->old_name, host_client->name);
+ strcpy(host_client->old_name, host_client->name);
+ // send notification to all clients
+ MSG_WriteByte (&sv.reliable_datagram, svc_updatename);
+ MSG_WriteByte (&sv.reliable_datagram, host_client - svs.clients);
+ MSG_WriteString (&sv.reliable_datagram, host_client->name);
+ }