diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-11-08 19:54:18 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-11-08 19:54:18 +0000 |
| commit | 6475366e5955e71706c8cd37f07452732a5e1458 (patch) | |
| tree | e645a02ec68ef794e5fbae4d87a9adad10c14197 /src | |
| parent | 6dd9aead7340080773fbac0996912f7fc18f091b (diff) | |
| download | zcatch-6475366e5955e71706c8cd37f07452732a5e1458.tar.gz zcatch-6475366e5955e71706c8cd37f07452732a5e1458.zip | |
fixed lan browser. fixed major bug in the caused the server not to report correctly
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine/client/client.c | 4 | ||||
| -rw-r--r-- | src/engine/client/srvbrowse.c | 8 | ||||
| -rw-r--r-- | src/engine/server/server.c | 1 | ||||
| -rw-r--r-- | src/engine/system.c | 2 | ||||
| -rw-r--r-- | src/game/client/menu2.cpp | 19 |
5 files changed, 26 insertions, 8 deletions
diff --git a/src/engine/client/client.c b/src/engine/client/client.c index 092f6805..43f3fb3d 100644 --- a/src/engine/client/client.c +++ b/src/engine/client/client.c @@ -523,8 +523,8 @@ static void client_process_packet(NETPACKET *packet) int size = packet->data_size-sizeof(SERVERBROWSE_LIST); int num = size/sizeof(NETADDR4); NETADDR4 *addrs = (NETADDR4 *)((char*)packet->data+sizeof(SERVERBROWSE_LIST)); - int i; + for(i = 0; i < num; i++) { NETADDR4 addr = addrs[i]; @@ -555,6 +555,8 @@ static void client_process_packet(NETPACKET *packet) SERVER_INFO info = {0}; int i; + dbg_msg("temp", "got server info"); + unpacker_reset(&up, (unsigned char*)packet->data+sizeof(SERVERBROWSE_INFO), packet->data_size-sizeof(SERVERBROWSE_INFO)); strncpy(info.version, unpacker_get_string(&up), 32); diff --git a/src/engine/client/srvbrowse.c b/src/engine/client/srvbrowse.c index b3ff635a..fcbfa629 100644 --- a/src/engine/client/srvbrowse.c +++ b/src/engine/client/srvbrowse.c @@ -298,10 +298,10 @@ void client_serverbrowse_refresh(int lan) NETPACKET packet; packet.client_id = -1; mem_zero(&packet, sizeof(packet)); - packet.address.ip[0] = 0; - packet.address.ip[1] = 0; - packet.address.ip[2] = 0; - packet.address.ip[3] = 0; + packet.address.ip[0] = 255; + packet.address.ip[1] = 255; + packet.address.ip[2] = 255; + packet.address.ip[3] = 255; packet.address.port = 8303; packet.flags = PACKETFLAG_CONNLESS; packet.data_size = sizeof(SERVERBROWSE_GETINFO); diff --git a/src/engine/server/server.c b/src/engine/server/server.c index 8b591de6..85e0bacb 100644 --- a/src/engine/server/server.c +++ b/src/engine/server/server.c @@ -529,6 +529,7 @@ static void server_send_serverinfo(NETADDR4 *addr) } packer_reset(&p); + packer_add_raw(&p, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO)); packer_add_string(&p, mods_net_version(), 32); packer_add_string(&p, config.sv_name, 64); packer_add_string(&p, config.sv_map, 32); diff --git a/src/engine/system.c b/src/engine/system.c index a6fb362c..e0fcc0b5 100644 --- a/src/engine/system.c +++ b/src/engine/system.c @@ -450,6 +450,8 @@ int net_udp4_send(NETSOCKET sock, const NETADDR4 *addr, const void *data, int si mem_zero(&sa, sizeof(sa)); netaddr4_to_sockaddr(addr, &sa); d = sendto((int)sock, (const char*)data, size, 0, &sa, sizeof(sa)); + if(d < 0) + dbg_msg("net", "sendto error %d %x", d, d); return d; } diff --git a/src/game/client/menu2.cpp b/src/game/client/menu2.cpp index 874a2e40..aaf170de 100644 --- a/src/game/client/menu2.cpp +++ b/src/game/client/menu2.cpp @@ -587,13 +587,19 @@ static int menu2_render_menubar(RECT r) ui2_vsplit_l(&box, 110.0f, &button, &box); static int internet_button=0; if (ui2_do_button(&internet_button, "Internet", config.ui_page==PAGE_INTERNET, &button, ui2_draw_menu_tab_button, 0)) + { + client_serverbrowse_refresh(0); config.ui_page = PAGE_INTERNET; + } ui2_vsplit_l(&box, 4.0f, 0, &box); ui2_vsplit_l(&box, 90.0f, &button, &box); static int lan_button=0; if (ui2_do_button(&lan_button, "LAN", config.ui_page==PAGE_LAN, &button, ui2_draw_menu_tab_button, 0)) + { + client_serverbrowse_refresh(1); config.ui_page = PAGE_LAN; + } if(0) // this one is not done yet { @@ -730,7 +736,6 @@ static void menu2_render_serverbrowser(RECT main_view) } } - ui2_draw_rect(&view, vec4(0,0,0,0.15f), 0, 0); RECT scroll; @@ -904,7 +909,12 @@ static void menu2_render_serverbrowser(RECT main_view) ui2_vmargin(&button, 2.0f, &button); static int refresh_button = 0; if(ui2_do_button(&refresh_button, "Refresh", 0, &button, ui2_draw_menu_button, 0)) - client_serverbrowse_refresh(0); + { + if(config.ui_page == PAGE_INTERNET) + client_serverbrowse_refresh(0); + else if(config.ui_page == PAGE_LAN) + client_serverbrowse_refresh(1); + } ui2_hsplit_t(&toolbox, 20.0f, &button, &toolbox); ui2_do_label(&button, "Host address:", 18, -1); @@ -1170,7 +1180,10 @@ int menu2_render() static bool first = true; if(first) { - client_serverbrowse_refresh(0); + if(config.ui_page == PAGE_INTERNET) + client_serverbrowse_refresh(0); + else if(config.ui_page == PAGE_LAN) + client_serverbrowse_refresh(1); first = false; } |