diff --git a/rrserver/packets/SRB2/v55/__init__.py b/rrserver/packets/SRB2/v55/__init__.py index ad6cdfeb5aeacd728b309f38b345ad124fcf82d2..9e3c66b0492fa3045350973b8feea5dfd29de9f3 100644 --- a/rrserver/packets/SRB2/v55/__init__.py +++ b/rrserver/packets/SRB2/v55/__init__.py @@ -46,7 +46,12 @@ ServerInfo = Struct( # # Gameplay # - 'gametype' / PaddedString(24, 'ascii'), + # TODO: due to a bug in netcode/server_connection.c, + # SV_SendServerInfo, the last byte of some fields is + # not properly written. Until a solution is + # determined, we shall ignore this byte on the + # receiving end. + 'gametype' / PaddedString(23, 'ascii'), Padding(1), 'modified' / Flag, 'cheats' / Flag, '_flags' / FlagsEnum( @@ -57,7 +62,13 @@ ServerInfo = Struct( '_num_files' / u8, '_askinfo_time' / u32, 'map_time' / TicrateAdapter(u32), - 'server_name' / PrettyNameAdapter(PaddedCString(32)), + # TODO: due to a bug in netcode/server_connection.c, + # SV_SendServerInfo, the last byte of some fields is + # not properly written. Until a solution is + # determined, we shall ignore this byte on the + # receiving end. + 'server_name' / PrettyNameAdapter(PaddedCString(31)), + Padding(1), # netcode/server_connection.c, SV_SendServerInfo # This is an 8-byte field, however only 7 bytes are