From 1d880da7773bf54203debb35cff710a829cf435f Mon Sep 17 00:00:00 2001 From: Thilo Schulz Date: Tue, 12 Jul 2011 00:34:25 +0000 Subject: [PATCH] Permit downloading files larger than 65 Megabytes via UDP by working around short int wraparound. --- code/client/cl_parse.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/client/cl_parse.c b/code/client/cl_parse.c index b75b2d3a..5dfba5b4 100644 --- a/code/client/cl_parse.c +++ b/code/client/cl_parse.c @@ -560,7 +560,7 @@ A download message has been received from the server void CL_ParseDownload ( msg_t *msg ) { int size; unsigned char data[MAX_MSGLEN]; - int block; + uint16_t block; if (!*clc.downloadTempName) { Com_Printf("Server sending download, but no download was requested\n"); @@ -571,7 +571,7 @@ void CL_ParseDownload ( msg_t *msg ) { // read the data block = MSG_ReadShort ( msg ); - if ( !block ) + if(!block && !clc.downloadBlock) { // block zero is special, contains file size clc.downloadSize = MSG_ReadLong ( msg ); @@ -594,8 +594,9 @@ void CL_ParseDownload ( msg_t *msg ) { MSG_ReadData(msg, data, size); - if (clc.downloadBlock != block) { - Com_DPrintf( "CL_ParseDownload: Expected block %d, got %d\n", clc.downloadBlock, block); + if((clc.downloadBlock & 0xFFFF) != block) + { + Com_DPrintf( "CL_ParseDownload: Expected block %d, got %d\n", (clc.downloadBlock & 0xFFFF), block); return; }