From 42ab099a07854f6fb4c3269a550ab9dd30cc894c Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sat, 23 May 2026 19:26:47 +0500 Subject: [PATCH] engine: check server address if client received split packet --- engine/client/cl_main.c | 2 +- engine/common/net_ws.c | 4 ++++ engine/common/net_ws.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 6b5b01f9..793511f6 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -2284,7 +2284,7 @@ CL_IsFromConnectingServer Used for connectionless packets, when netchan may not be ready. ================= */ -static qboolean CL_IsFromConnectingServer( netadr_t from ) +qboolean CL_IsFromConnectingServer( netadr_t from ) { return NET_IsLocalAddress( from ) || NET_CompareAdr( cls.serveradr, from ); diff --git a/engine/common/net_ws.c b/engine/common/net_ws.c index 8ddc70f3..e6c1108b 100644 --- a/engine/common/net_ws.c +++ b/engine/common/net_ws.c @@ -1358,7 +1358,11 @@ static qboolean NET_QueuePacket( int net_socket, netsrc_t sock, netadr_t *from, #if !XASH_DEDICATED // check for split message if( sock == NS_CLIENT && *(int *)data == NET_HEADER_SPLITPACKET ) + { + if( !CL_IsFromConnectingServer( *from )) + return false; return NET_GetLong( data, ret, length, CL_GetSplitSize( ), CL_Protocol( )); + } #endif // lag the packet, if needed diff --git a/engine/common/net_ws.h b/engine/common/net_ws.h index 551bbcc7..fea44ae3 100644 --- a/engine/common/net_ws.h +++ b/engine/common/net_ws.h @@ -87,6 +87,7 @@ void NET_GetLocalAddress( netadr_t *ip4, netadr_t *ip6 ); #if !XASH_DEDICATED size_t CL_GetSplitSize( void ); +qboolean CL_IsFromConnectingServer( netadr_t from ); #endif void HTTP_AddCustomServer( const char *url );