From 266f9a6bc6e9af1e5095b2336d21c73227e40b40 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Tue, 9 Jan 2024 16:59:06 +0300 Subject: [PATCH] engine: client: add support for parsing IPv6 server list --- engine/client/cl_main.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 5ca07ef1..fb4eada4 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -2191,9 +2191,20 @@ void CL_ConnectionlessPacket( netadr_t from, sizebuf_t *msg ) // serverlist got from masterserver while( MSG_GetNumBitsLeft( msg ) > 8 ) { - MSG_ReadBytes( msg, servadr.ip, sizeof( servadr.ip )); // 4 bytes for IP + uint8_t addr[16]; + + if( from.type6 == NA_IP6 ) // IPv6 master server only sends IPv6 addresses + { + MSG_ReadBytes( msg, addr, sizeof( addr )); + NET_IP6BytesToNetadr( &servadr, addr ); + servadr.type6 = NA_IP6; + } + else + { + MSG_ReadBytes( msg, servadr.ip, sizeof( servadr.ip )); // 4 bytes for IP + servadr.type = NA_IP; + } servadr.port = MSG_ReadShort( msg ); // 2 bytes for Port - servadr.type = NA_IP; // list is ends here if( !servadr.port )