mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-05-31 00:30:57 +00:00
fix a snafu in SVC_DirectConnect related to info strings, make
Info_ParseString take (and pass on to Info_SetValueForStarKey) a flags arg and simplify the flags handing in Info_SetValueForStarKey.
This commit is contained in:
parent
b6a3bc8d1c
commit
d93fceea38
6 changed files with 25 additions and 36 deletions
|
@ -393,7 +393,7 @@ CL_ClearState (void)
|
|||
for (i = 0; i < UPDATE_BACKUP; i++)
|
||||
cl.frames[i].packet_entities.entities = cl_entities[i];
|
||||
memset (cl_entities, 0, sizeof (cl_entities));
|
||||
cl.serverinfo = Info_ParseString ("", MAX_INFO_STRING);
|
||||
cl.serverinfo = Info_ParseString ("", MAX_INFO_STRING, 0);
|
||||
|
||||
CL_Init_Entity (&cl.viewent);
|
||||
|
||||
|
@ -582,7 +582,7 @@ CL_FullServerinfo_f (void)
|
|||
|
||||
Con_DPrintf ("Cmd_Argv(1): '%s'\n", Cmd_Argv (1));
|
||||
Info_Destroy (cl.serverinfo);
|
||||
cl.serverinfo = Info_ParseString (Cmd_Argv (1), MAX_SERVERINFO_STRING);
|
||||
cl.serverinfo = Info_ParseString (Cmd_Argv (1), MAX_SERVERINFO_STRING, 0);
|
||||
Con_DPrintf ("cl.serverinfo: '%s'\n", Info_MakeString (cl.serverinfo, 0));
|
||||
|
||||
if ((p = Info_ValueForKey (cl.serverinfo, "*qf_version")) && *p) {
|
||||
|
@ -1692,8 +1692,8 @@ Host_Init (void)
|
|||
|
||||
pr_gametype = "quakeworld";
|
||||
|
||||
cls.userinfo = Info_ParseString ("", MAX_INFO_STRING);
|
||||
cl.serverinfo = Info_ParseString ("", MAX_INFO_STRING);
|
||||
cls.userinfo = Info_ParseString ("", MAX_INFO_STRING, 0);
|
||||
cl.serverinfo = Info_ParseString ("", MAX_INFO_STRING, 0);
|
||||
|
||||
QFS_Init ("qw");
|
||||
PI_Init ();
|
||||
|
|
|
@ -1038,7 +1038,7 @@ CL_UpdateUserinfo (void)
|
|||
if (*info) {
|
||||
// a totally empty userinfo string should not be possible
|
||||
player->userid = uid;
|
||||
player->userinfo = Info_ParseString (info, MAX_INFO_STRING);
|
||||
player->userinfo = Info_ParseString (info, MAX_INFO_STRING, 0);
|
||||
CL_ProcessUserInfo (slot, player);
|
||||
} else {
|
||||
// the server dropped the client
|
||||
|
@ -1067,7 +1067,7 @@ CL_SetInfo (void)
|
|||
Con_DPrintf ("SETINFO %s: %s=%s\n", player->name, key, value);
|
||||
|
||||
if (!player->userinfo)
|
||||
player->userinfo = Info_ParseString ("", MAX_INFO_STRING);
|
||||
player->userinfo = Info_ParseString ("", MAX_INFO_STRING, 0);
|
||||
|
||||
flags = !strequal (key, "name");
|
||||
flags |= strequal (key, "team") << 1;
|
||||
|
|
|
@ -702,7 +702,7 @@ SL_CheckStatus (const char *cs_from, const char *cs_data)
|
|||
}
|
||||
if (temp->status)
|
||||
Info_Destroy (temp->status);
|
||||
temp->status = Info_ParseString (cs_data, strlen (data));
|
||||
temp->status = Info_ParseString (cs_data, strlen (data), 0);
|
||||
temp->waitstatus = 0;
|
||||
tmp_desc = Info_ValueForKey (temp->status, "hostname");
|
||||
if (tmp_desc[0] != '\0') {
|
||||
|
|
|
@ -751,7 +751,8 @@ SVC_DirectConnect (void)
|
|||
challenge = atoi (Cmd_Argv (3));
|
||||
|
||||
if (strlen (Cmd_Argv (4)) < MAX_INFO_STRING)
|
||||
userinfo = Info_ParseString (Cmd_Argv (4), 1023);
|
||||
userinfo = Info_ParseString (Cmd_Argv (4), 1023,
|
||||
!sv_highchars->int_val);
|
||||
|
||||
// Validate the userinfo string.
|
||||
if (!userinfo) {
|
||||
|
@ -830,17 +831,7 @@ SVC_DirectConnect (void)
|
|||
|
||||
newcl->userid = userid;
|
||||
|
||||
// works properly
|
||||
if (!sv_highchars->int_val) {
|
||||
byte *p, *q;
|
||||
|
||||
for (p = (byte *) newcl->userinfo, q = (byte *) userinfo;
|
||||
*q && p < (byte *) newcl->userinfo + sizeof (newcl->userinfo) - 1;
|
||||
q++)
|
||||
if (*q > 31 && *q <= 127)
|
||||
*p++ = *q;
|
||||
} else
|
||||
newcl->userinfo = userinfo;
|
||||
newcl->userinfo = userinfo;
|
||||
|
||||
// if there is already a slot for this ip, drop it
|
||||
for (i = 0, cl = svs.clients; i < MAX_CLIENTS; i++, cl++) {
|
||||
|
@ -2501,8 +2492,8 @@ SV_Init (void)
|
|||
SV_Init_Memory ();
|
||||
|
||||
svs.maxclients = MAX_CLIENTS;
|
||||
svs.info = Info_ParseString ("", MAX_SERVERINFO_STRING);
|
||||
localinfo = Info_ParseString ("", 0); // unlimited
|
||||
svs.info = Info_ParseString ("", MAX_SERVERINFO_STRING, 0);
|
||||
localinfo = Info_ParseString ("", 0, 0); // unlimited
|
||||
SV_InitOperatorCommands ();
|
||||
SV_GIB_Init ();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue