about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-08 19:54:18 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-08 19:54:18 +0000
commit6475366e5955e71706c8cd37f07452732a5e1458 (patch)
treee645a02ec68ef794e5fbae4d87a9adad10c14197 /src
parent6dd9aead7340080773fbac0996912f7fc18f091b (diff)
downloadzcatch-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.c4
-rw-r--r--src/engine/client/srvbrowse.c8
-rw-r--r--src/engine/server/server.c1
-rw-r--r--src/engine/system.c2
-rw-r--r--src/game/client/menu2.cpp19
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;
 	}