about summary refs log tree commit diff
path: root/src/engine/server
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-13 20:09:07 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-13 20:09:07 +0000
commit8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d (patch)
treeb9893c835781d7f8c871d699342a682c89bec198 /src/engine/server
parent24b023a4450de3b7fb201633b863867f0b59dd17 (diff)
downloadzcatch-8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d.tar.gz
zcatch-8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d.zip
fixed the server to report the alternative port correctly
Diffstat (limited to 'src/engine/server')
-rw-r--r--src/engine/server/server.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/engine/server/server.c b/src/engine/server/server.c
index b723e1b9..d2ef39ed 100644
--- a/src/engine/server/server.c
+++ b/src/engine/server/server.c
@@ -435,12 +435,24 @@ static void server_send_map(int cid)
 	
 static void server_send_heartbeat()
 {
+	static unsigned char data[sizeof(SERVERBROWSE_HEARTBEAT) + 2];
+	unsigned short port = config.sv_port;
 	NETPACKET packet;
+	
+	mem_copy(data, SERVERBROWSE_HEARTBEAT, sizeof(SERVERBROWSE_HEARTBEAT));
+	
 	packet.client_id = -1;
 	packet.address = master_server;
 	packet.flags = PACKETFLAG_CONNLESS;
-	packet.data_size = sizeof(SERVERBROWSE_HEARTBEAT);
-	packet.data = SERVERBROWSE_HEARTBEAT;
+	packet.data_size = sizeof(SERVERBROWSE_HEARTBEAT) + 2;
+	packet.data = &data;
+
+	/* supply the set port that the master can use if it has problems */	
+	if(config.sv_external_port)
+		port = config.sv_external_port;
+	data[sizeof(SERVERBROWSE_HEARTBEAT)] = port >> 8;
+	data[sizeof(SERVERBROWSE_HEARTBEAT)+1] = port&0xff;
+	
 	netserver_send(net, &packet);
 }