1 | /* |
1 | /* |
2 | * static char *rcsid_metaserver_c = |
2 | * static char *rcsid_metaserver_c = |
3 | * "$Id: metaserver.c,v 1.5 2006/07/09 14:09:20 root Exp $"; |
3 | * "$Id: metaserver.c,v 1.7 2006/07/16 17:53:58 root Exp $"; |
4 | */ |
4 | */ |
5 | |
5 | |
6 | /* |
6 | /* |
7 | CrossFire, A Multiplayer game for X-windows |
7 | CrossFire, A Multiplayer game for X-windows |
8 | |
8 | |
… | |
… | |
118 | * Updates our info in the metaserver |
118 | * Updates our info in the metaserver |
119 | */ |
119 | */ |
120 | void metaserver_update(void) |
120 | void metaserver_update(void) |
121 | { |
121 | { |
122 | char data[MAX_BUF], num_players=0; |
122 | char data[MAX_BUF], num_players=0; |
123 | #define CAT2_SUXX |
|
|
124 | #ifdef CAT2_SUXX |
|
|
125 | num_players += 20; |
|
|
126 | #endif |
|
|
127 | player *pl; |
123 | player *pl; |
128 | |
124 | |
129 | if (metafd == -1) return; /* No valid connection */ |
125 | if (metafd == -1) return; /* No valid connection */ |
130 | |
126 | |
131 | /* We could use socket_info.nconns, but that is not quite as accurate, |
127 | /* We could use socket_info.nconns, but that is not quite as accurate, |
132 | * as connections in the progress of being established, are listening |
128 | * as connections in the progress of being established, are listening |
133 | * but don't have a player, etc. This operation below should not be that |
129 | * but don't have a player, etc. This operation below should not be that |
134 | * costly. |
130 | * costly. |
135 | */ |
131 | */ |
136 | for (pl=first_player; pl!=NULL; pl=pl->next) |
132 | for (pl=first_player; pl!=NULL; pl=pl->next) |
137 | if (!pl->hidden pl->ob->map) num_players++; |
133 | if (!pl->hidden && pl->ob->map) num_players++; |
138 | |
134 | |
139 | sprintf(data,"%s|%d|%s|%s|%d|%d|%ld", settings.meta_host, num_players, VERSION "+", |
135 | sprintf(data,"%s|%d|%s|%s|%d|%d|%ld", settings.meta_host, num_players, VERSION "+", |
140 | settings.meta_comment, cst_tot.ibytes, cst_tot.obytes, |
136 | settings.meta_comment, cst_tot.ibytes, cst_tot.obytes, |
141 | (long)time(NULL) - cst_tot.time_start); |
137 | (long)time(NULL) - cst_tot.time_start); |
142 | if (sendto(metafd, data, strlen(data), 0, (struct sockaddr *)&sock, sizeof(sock))<0) { |
138 | if (sendto(metafd, data, strlen(data), 0, (struct sockaddr *)&sock, sizeof(sock))<0) { |