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 );