1 | /* |
1 | /* |
2 | * static char *rcsid_metaserver_c = |
2 | * static char *rcsid_metaserver_c = |
3 | * "$Id: metaserver.c,v 1.2 2006/02/12 13:09:15 root Exp $"; |
3 | * "$Id: metaserver.c,v 1.5 2006/07/09 14:09:20 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 | |
… | |
… | |
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 |
123 | #define CAT2_SUXX |
124 | #ifdef CAT2_SUXX |
124 | #ifdef CAT2_SUXX |
125 | num_players += 18 + rand() % 5; |
125 | num_players += 20; |
126 | #endif |
126 | #endif |
127 | player *pl; |
127 | player *pl; |
128 | |
128 | |
129 | if (metafd == -1) return; /* No valid connection */ |
129 | if (metafd == -1) return; /* No valid connection */ |
130 | |
130 | |
131 | /* We could use socket_info.nconns, but that is not quite as accurate, |
131 | /* We could use socket_info.nconns, but that is not quite as accurate, |
132 | * as connections in the progress of being established, are listening |
132 | * 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 |
133 | * but don't have a player, etc. This operation below should not be that |
134 | * costly. |
134 | * costly. |
135 | */ |
135 | */ |
136 | for (pl=first_player; pl!=NULL; pl=pl->next) { |
136 | for (pl=first_player; pl!=NULL; pl=pl->next) |
137 | if (!pl->hidden) num_players++; |
137 | if (!pl->hidden pl->ob->map) num_players++; |
138 | } |
|
|
139 | |
138 | |
140 | sprintf(data,"%s|%d|%s|%s|%d|%d|%ld", settings.meta_host, num_players, VERSION, |
139 | sprintf(data,"%s|%d|%s|%s|%d|%d|%ld", settings.meta_host, num_players, VERSION "+", |
141 | settings.meta_comment, cst_tot.ibytes, cst_tot.obytes, |
140 | settings.meta_comment, cst_tot.ibytes, cst_tot.obytes, |
142 | (long)time(NULL) - cst_tot.time_start); |
141 | (long)time(NULL) - cst_tot.time_start); |
143 | if (sendto(metafd, data, strlen(data), 0, (struct sockaddr *)&sock, sizeof(sock))<0) { |
142 | if (sendto(metafd, data, strlen(data), 0, (struct sockaddr *)&sock, sizeof(sock))<0) { |
144 | LOG(llevDebug,"metaserver_update: sendto failed, err = %d\n", errno); |
143 | LOG(llevDebug,"metaserver_update: sendto failed, err = %d\n", errno); |
145 | } |
144 | } |