diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-12-13 20:09:07 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-12-13 20:09:07 +0000 |
| commit | 8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d (patch) | |
| tree | b9893c835781d7f8c871d699342a682c89bec198 | |
| parent | 24b023a4450de3b7fb201633b863867f0b59dd17 (diff) | |
| download | zcatch-8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d.tar.gz zcatch-8f39b81ab0c49bd2c46dcdd191e626d577b7ba1d.zip | |
fixed the server to report the alternative port correctly
| -rw-r--r-- | src/engine/config_variables.h | 1 | ||||
| -rw-r--r-- | src/engine/server/server.c | 16 |
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); } |