diff options
Diffstat (limited to 'src/engine/server/es_server.c')
| -rw-r--r-- | src/engine/server/es_server.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c index 5ff58dbe..2ef676a3 100644 --- a/src/engine/server/es_server.c +++ b/src/engine/server/es_server.c @@ -852,11 +852,19 @@ static void server_send_serverinfo(NETADDR *addr, int token) } packer_reset(&p); - packer_add_raw(&p, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO)); - /* token */ - str_format(buf, sizeof(buf), "%d", token); - packer_add_string(&p, buf, 6); + if(token >= 0) + { + /* new token based format */ + packer_add_raw(&p, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO)); + str_format(buf, sizeof(buf), "%d", token); + packer_add_string(&p, buf, 6); + } + else + { + /* old format */ + packer_add_raw(&p, SERVERBROWSE_OLD_INFO, sizeof(SERVERBROWSE_OLD_INFO)); + } packer_add_string(&p, mods_version(), 32); packer_add_string(&p, config.sv_name, 64); @@ -921,6 +929,13 @@ static void server_pump_network() { server_send_serverinfo(&packet.address, ((unsigned char *)packet.data)[sizeof(SERVERBROWSE_GETINFO)]); } + + + if(packet.data_size == sizeof(SERVERBROWSE_OLD_GETINFO) && + memcmp(packet.data, SERVERBROWSE_OLD_GETINFO, sizeof(SERVERBROWSE_OLD_GETINFO)) == 0) + { + server_send_serverinfo(&packet.address, -1); + } } } else |