Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv23065/src
Modified Files:
parsemeta.c
Log Message:
parsemeta.c (version_r): Cleans up code on converting metaserver status. Removes need for sp->why_dead workaround.
Index: parsemeta.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/parsemeta.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- parsemeta.c 29 Nov 2006 10:13:29 -0000 1.13
+++ parsemeta.c 29 Nov 2006 10:34:09 -0000 1.14
@@ -502,7 +502,7 @@
struct servers *sp = NULL;
char *host, type;
int port, status, age, players, queue, throwaway;
- int tempstatus = 0;
+ int tempstatus, tempplayers;
throwaway = 0;
@@ -517,52 +517,54 @@
if (p == NULL) continue;
status = atoi(p);
+ p = strtok(NULL,","); /* age (of data in seconds) */
+ if (p == NULL) continue;
+ age = atoi(p);
+
+ p = strtok(NULL,","); /* players */
+ if (p == NULL) continue;
+ players = atoi(p);
+
+ p = strtok(NULL,","); /* queue size */
+ if (p == NULL) continue;
+ queue = atoi(p);
+
+ p = strtok(NULL,"\n"); /* server type */
+ if (p == NULL) continue;
+ type = p[0];
+
/* Metaserver and client define status level differently, must convert
- status so that client option metaStatusLevel works properly */
+ status so that client option metaStatusLevel works properly. And
+ temporarily record player field as well. */
switch (status) {
case SS_QUEUE:
tempstatus = statusWait;
+ tempplayers = queue;
break;
case SS_OPEN:
tempstatus = statusOpen;
+ tempplayers = players;
break;
case SS_EMPTY:
tempstatus = statusNobody;
+ tempplayers = 0;
break;
case SS_TOUT:
tempstatus = statusTout;
+ tempplayers = 0;
break;
case SS_NOCONN: /* no connection */
case SS_WORKING: /* metaserver should not return this */
case SS_INIT: /* nor this */
default:
tempstatus = statusNoConnect;
+ tempplayers = 0;
break;
}
/* ignore servers based on converted status */
if (tempstatus > statusLevel)
throwaway++;
- /* the sp->why_dead workaround */
- if (status == 6)
- if ((status - 3) <= statusLevel)
- throwaway--;
-
- p = strtok(NULL,","); /* age (of data in seconds) */
- if (p == NULL) continue;
- age = atoi(p);
-
- p = strtok(NULL,","); /* players */
- if (p == NULL) continue;
- players = atoi(p);
-
- p = strtok(NULL,","); /* queue size */
- if (p == NULL) continue;
- queue = atoi(p);
-
- p = strtok(NULL,"\n"); /* server type */
- if (p == NULL) continue;
- type = p[0];
/* ignore paradise servers */
if (type == 'P') throwaway++;
@@ -599,31 +601,10 @@
}
sp->refresh = 1;
- switch (status) {
- case SS_QUEUE:
- sp->status = statusWait;
- sp->players = queue;
- break;
- case SS_OPEN:
- sp->status = statusOpen;
- sp->players = players;
- break;
- case SS_EMPTY:
- sp->status = statusNobody;
- sp->players = 0;
- break;
- case SS_TOUT:
- sp->status = statusTout;
- sp->players = 0;
- break;
- case SS_NOCONN: /* no connection */
- case SS_WORKING: /* metaserver should not return this */
- case SS_INIT: /* nor this */
- default:
- sp->status = statusNoConnect;
- sp->players = 0;
- break;
- }
+ /* Use converted status and player values */
+ sp->status = tempstatus;
+ sp->players = tempplayers;
+
sp->typeflag = type;
strcpy(sp->comment, "");
#ifdef METAPING
@@ -1166,11 +1147,11 @@
LoadMetasCache();
if (num_servers == 0) ReadMetasRecv(-1);
if (num_servers != 0) {
- metaHeight = num_servers + 10;
+ metaHeight = num_servers + 6;
} else {
LineToConsole("Warning: no response from metaservers, are you firewalled?\n"
" (no reply to probe on UDP port %d)\n", metaPort);
- metaHeight = num_servers + 15;
+ metaHeight = num_servers + 11;
}
return;
break;