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