about summary refs log tree commit diff
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
parent24b023a4450de3b7fb201633b863867f0b59dd17 (diff)
downloadzcatch-8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d.tar.gz
zcatch-8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d.zip
fixed the server to report the alternative port correctly
-rw-r--r--src/engine/config_variables.h1
-rw-r--r--src/engine/server/server.c16
2 files changed, 15 insertions, 2 deletions
diff --git a/src/engine/config_variables.h b/src/engine/config_variables.h
index 9e3fb4d7..4a63e731 100644
--- a/src/engine/config_variables.h
+++ b/src/engine/config_variables.h
@@ -43,6 +43,7 @@ MACRO_CONFIG_STR(masterserver, 128, "master.teewars.com")
 MACRO_CONFIG_STR(sv_name, 128, "unnamed server")
 MACRO_CONFIG_STR(sv_bindaddr, 128, "")
 MACRO_CONFIG_INT(sv_port, 8303, 0, 0)
+MACRO_CONFIG_INT(sv_external_port, 0, 0, 0)
 MACRO_CONFIG_INT(sv_sendheartbeats, 1, 0, 1)
 MACRO_CONFIG_STR(sv_map, 128, "dm1")
 MACRO_CONFIG_INT(sv_map_reload, 0, 0, 1)
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);
 }