diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-08-31 19:29:09 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-08-31 19:29:09 +0000 |
| commit | 62d9ff05d6cc0ae1cd952d51a168f6ffcf6abf60 (patch) | |
| tree | a8c6e49093df4fabdc5380149d73b8e7b9fcfc43 /src/engine/client | |
| parent | 0a48454a554f8aa221a54b694b32b3004b9f6fd7 (diff) | |
| download | zcatch-62d9ff05d6cc0ae1cd952d51a168f6ffcf6abf60.tar.gz zcatch-62d9ff05d6cc0ae1cd952d51a168f6ffcf6abf60.zip | |
fixed connection less packets. they behave like the old version so version server and master servers still work
Diffstat (limited to 'src/engine/client')
| -rw-r--r-- | src/engine/client/ec_client.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/engine/client/ec_client.c b/src/engine/client/ec_client.c index 409534d1..7445974f 100644 --- a/src/engine/client/ec_client.c +++ b/src/engine/client/ec_client.c @@ -711,19 +711,23 @@ static void client_process_packet(NETCHUNK *packet) memcmp(packet->data, SERVERBROWSE_LIST, sizeof(SERVERBROWSE_LIST)) == 0) { int size = packet->data_size-sizeof(SERVERBROWSE_LIST); - int num = size/sizeof(NETADDR); - NETADDR *addrs = (NETADDR *)((char*)packet->data+sizeof(SERVERBROWSE_LIST)); + int num = size/sizeof(MASTERSRV_ADDR); + MASTERSRV_ADDR *addrs = (MASTERSRV_ADDR *)((char*)packet->data+sizeof(SERVERBROWSE_LIST)); int i; - + for(i = 0; i < num; i++) { - NETADDR addr = addrs[i]; + NETADDR addr; SERVER_INFO info = {0}; - -#if defined(CONF_ARCH_ENDIAN_BIG) - const char *tmp = (const char *)&addr.port; - addr.port = (tmp[1]<<8) | tmp[0]; -#endif + + /* convert address */ + mem_zero(&addr, sizeof(addr)); + addr.type = NETTYPE_IPV4; + addr.ip[0] = addrs[i].ip[0]; + addr.ip[1] = addrs[i].ip[1]; + addr.ip[2] = addrs[i].ip[2]; + addr.ip[3] = addrs[i].ip[3]; + addr.port = (addrs[i].port[1]<<8) | addrs[i].port[0]; info.latency = 999; str_format(info.address, sizeof(info.address), "%d.%d.%d.%d:%d", |