diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-09-07 21:13:24 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-09-07 21:13:24 +0000 |
| commit | 3b086d616a9090f714c90c7985f10c5dc4bd5733 (patch) | |
| tree | 8137021d446260adfc5eacd753f9e42ab5281e7d /src/engine/client/ec_srvbrowse.c | |
| parent | 6a4e17ea8520e9eb3a88ce15a9e337679d631775 (diff) | |
| download | zcatch-3b086d616a9090f714c90c7985f10c5dc4bd5733.tar.gz zcatch-3b086d616a9090f714c90c7985f10c5dc4bd5733.zip | |
fixed threaded jobs
Diffstat (limited to 'src/engine/client/ec_srvbrowse.c')
| -rw-r--r-- | src/engine/client/ec_srvbrowse.c | 73 |
1 files changed, 44 insertions, 29 deletions
diff --git a/src/engine/client/ec_srvbrowse.c b/src/engine/client/ec_srvbrowse.c index 98f60643..20a80e97 100644 --- a/src/engine/client/ec_srvbrowse.c +++ b/src/engine/client/ec_srvbrowse.c @@ -49,6 +49,8 @@ static SERVERENTRY *first_req_server = 0; /* request list */ static SERVERENTRY *last_req_server = 0; static int num_requests = 0; +static int need_refresh = 0; + static int num_sorted_servers = 0; static int num_sorted_servers_capacity = 0; static int num_servers = 0; @@ -489,30 +491,8 @@ void client_serverbrowse_refresh(int type) } else if(type == BROWSETYPE_INTERNET) { - NETADDR addr; - NETCHUNK p; - int i; - - /*net_host_lookup(config.masterserver, MASTERSERVER_PORT, &master_server);*/ - - mem_zero(&p, sizeof(p)); - p.client_id = -1; - p.flags = NETSENDFLAG_CONNLESS; - p.data_size = sizeof(SERVERBROWSE_GETLIST); - p.data = SERVERBROWSE_GETLIST; - - for(i = 0; i < MAX_MASTERSERVERS; i++) - { - addr = mastersrv_get(i); - if(!addr.ip[0] && !addr.ip[1] && !addr.ip[2] && !addr.ip[3]) - continue; - - p.address = addr; - netclient_send(net, &p); - } - - if(config.debug) - dbg_msg("client", "requesting server list"); + need_refresh = 1; + mastersrv_refresh_addresses(); } else if(type == BROWSETYPE_FAVORITES) { @@ -524,7 +504,7 @@ void client_serverbrowse_refresh(int type) static void client_serverbrowse_request(SERVERENTRY *entry) { - unsigned char buffer[sizeof(SERVERBROWSE_GETINFO)+1]; + /*unsigned char buffer[sizeof(SERVERBROWSE_GETINFO)+1];*/ NETCHUNK p; if(config.debug) @@ -534,15 +514,15 @@ static void client_serverbrowse_request(SERVERENTRY *entry) entry->addr.ip[3], entry->addr.port); } - mem_copy(buffer, SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO)); - buffer[sizeof(SERVERBROWSE_GETINFO)] = current_token; + /*mem_copy(buffer, SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO)); + buffer[sizeof(SERVERBROWSE_GETINFO)] = current_token;*/ p.client_id = -1; p.address = entry->addr; p.flags = NETSENDFLAG_CONNLESS; - p.data_size = sizeof(buffer); + /*p.data_size = sizeof(buffer); p.data = buffer; - netclient_send(net, &p); + netclient_send(net, &p);*/ /* send old requtest style aswell */ p.data_size = sizeof(SERVERBROWSE_OLD_GETINFO); @@ -559,6 +539,35 @@ void client_serverbrowse_update() int count; SERVERENTRY *entry, *next; + /* do server list requests */ + if(need_refresh && !mastersrv_refreshing()) + { + NETADDR addr; + NETCHUNK p; + int i; + + need_refresh = 0; + + mem_zero(&p, sizeof(p)); + p.client_id = -1; + p.flags = NETSENDFLAG_CONNLESS; + p.data_size = sizeof(SERVERBROWSE_GETLIST); + p.data = SERVERBROWSE_GETLIST; + + for(i = 0; i < MAX_MASTERSERVERS; i++) + { + addr = mastersrv_get(i); + if(!addr.ip[0] && !addr.ip[1] && !addr.ip[2] && !addr.ip[3]) + continue; + + p.address = addr; + netclient_send(net, &p); + } + + if(config.debug) + dbg_msg("client", "requesting server list"); + } + /* do timeouts */ entry = first_req_server; while(1) @@ -660,3 +669,9 @@ void client_serverbrowse_save() engine_config_write_line(buffer); } } + + +int client_serverbrowse_refreshingmasters() +{ + return mastersrv_refreshing(); +} |