From 097974bde2a7bf5efe1ec37d85db196e6a93cafa Mon Sep 17 00:00:00 2001 From: mittorn Date: Wed, 30 Jan 2019 13:38:32 +0700 Subject: [PATCH] Check cl_dlmax sizes on client --- engine/client/cl_main.c | 4 ++++ engine/common/net_ws.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 10513687..d71b89d8 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -1044,9 +1044,13 @@ void CL_SendConnectPacket( void ) } else { + if( cl_dlmax->value > FRAGMENT_MAX_SIZE || cl_dlmax->value < FRAGMENT_MIN_SIZE ) + Cvar_SetValue( "cl_dlmax", FRAGMENT_DEFAULT_SIZE ); + // remove useless userinfo keys Cvar_FullSet( "cl_maxpacket", "0", 0 ); Cvar_FullSet( "cl_maxpayload", "1000", 0 ); + Info_SetValueForKey( protinfo, "uuid", key, sizeof( protinfo )); Info_SetValueForKey( protinfo, "qport", qport, sizeof( protinfo )); Netchan_OutOfBandPrint( NS_CLIENT, adr, "connect %i %i \"%s\" \"%s\"\n", PROTOCOL_VERSION, cls.challenge, protinfo, cls.userinfo ); diff --git a/engine/common/net_ws.c b/engine/common/net_ws.c index 25ff6b29..24fc223e 100644 --- a/engine/common/net_ws.c +++ b/engine/common/net_ws.c @@ -1230,6 +1230,9 @@ qboolean NET_QueuePacket( netsrc_t sock, netadr_t *from, byte *data, size_t *len // check for split message if( sock == NS_CLIENT && *(int *)data == NET_HEADER_SPLITPACKET ) { + int splitsize = Cvar_VariableInteger("cl_dlmax"); + if( splitsize < SPLITPACKET_MIN_SIZE || splitsize < SPLITPACKET_MAX_SIZE ) + Cvar_SetValue( "cl_dlmax", MAX_ROUTEABLE_PACKET ); return NET_GetLong( data, ret, length, Cvar_VariableInteger("cl_dlmax") ); } #endif