mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-26 22:11:18 +00:00
Permit downloading files larger than 65 Megabytes via UDP by working around short int wraparound.
This commit is contained in:
parent
7c5ec6aac4
commit
1d880da777
1 changed files with 5 additions and 4 deletions
|
@ -560,7 +560,7 @@ A download message has been received from the server
|
||||||
void CL_ParseDownload ( msg_t *msg ) {
|
void CL_ParseDownload ( msg_t *msg ) {
|
||||||
int size;
|
int size;
|
||||||
unsigned char data[MAX_MSGLEN];
|
unsigned char data[MAX_MSGLEN];
|
||||||
int block;
|
uint16_t block;
|
||||||
|
|
||||||
if (!*clc.downloadTempName) {
|
if (!*clc.downloadTempName) {
|
||||||
Com_Printf("Server sending download, but no download was requested\n");
|
Com_Printf("Server sending download, but no download was requested\n");
|
||||||
|
@ -571,7 +571,7 @@ void CL_ParseDownload ( msg_t *msg ) {
|
||||||
// read the data
|
// read the data
|
||||||
block = MSG_ReadShort ( msg );
|
block = MSG_ReadShort ( msg );
|
||||||
|
|
||||||
if ( !block )
|
if(!block && !clc.downloadBlock)
|
||||||
{
|
{
|
||||||
// block zero is special, contains file size
|
// block zero is special, contains file size
|
||||||
clc.downloadSize = MSG_ReadLong ( msg );
|
clc.downloadSize = MSG_ReadLong ( msg );
|
||||||
|
@ -594,8 +594,9 @@ void CL_ParseDownload ( msg_t *msg ) {
|
||||||
|
|
||||||
MSG_ReadData(msg, data, size);
|
MSG_ReadData(msg, data, size);
|
||||||
|
|
||||||
if (clc.downloadBlock != block) {
|
if((clc.downloadBlock & 0xFFFF) != block)
|
||||||
Com_DPrintf( "CL_ParseDownload: Expected block %d, got %d\n", clc.downloadBlock, block);
|
{
|
||||||
|
Com_DPrintf( "CL_ParseDownload: Expected block %d, got %d\n", (clc.downloadBlock & 0xFFFF), block);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue