Fix infinite loop in case an invalid pk3 file has been downloaded from the server. Thanks tjw for reporting (#3074)
This commit is contained in:
1 parent
d93cc3c997
commit
fd57c987c4
5 files changed
+78
-20
No files matched your search
@@ -332,8 +332,7 @@ void CL_cURL_PerformDownload(void)
|
||||
qcurl_easy_strerror(msg->data.result),
|
||||
code, clc.downloadURL);
|
||||
}
|
||||
*clc.downloadTempName = *clc.downloadName = 0;
|
||||
Cvar_Set( "cl_downloadName", "" );
|
||||
|
||||
CL_NextDownload();
|
||||
}
|
||||
#endif /* USE_CURL */
|
||||
+19
-1
@@ -1916,11 +1916,25 @@ CL_NextDownload
|
||||
A download completed or failed
|
||||
=================
|
||||
*/
|
||||
void CL_NextDownload(void) {
|
||||
void CL_NextDownload(void)
|
||||
{
|
||||
char *s;
|
||||
char *remoteName, *localName;
|
||||
qboolean useCURL = qfalse;
|
||||
|
||||
// A download has finished, check whether this matches a referenced checksum
|
||||
if(*clc.downloadName)
|
||||
{
|
||||
char *zippath = FS_BuildOSPath(Cvar_VariableString("fs_homepath"), clc.downloadName, "");
|
||||
zippath[strlen(zippath)-1] = '\0';
|
||||
|
||||
if(!FS_CompareZipChecksum(zippath))
|
||||
Com_Error(ERR_DROP, "Incorrect checksum for file: %s", clc.downloadName);
|
||||
}
|
||||
|
||||
*clc.downloadTempName = *clc.downloadName = 0;
|
||||
Cvar_Set("cl_downloadName", "");
|
||||
|
||||
// We are looking to start a download here
|
||||
if (*clc.downloadList) {
|
||||
s = clc.downloadList;
|
||||
@@ -2027,6 +2041,10 @@ void CL_InitDownloads(void) {
|
||||
if ( *clc.downloadList ) {
|
||||
// if autodownloading is not enabled on the server
|
||||
cls.state = CA_CONNECTED;
|
||||
|
||||
*clc.downloadTempName = *clc.downloadName = 0;
|
||||
Cvar_Set( "cl_downloadName", "" );
|
||||
|
||||
CL_NextDownload();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -619,8 +619,6 @@ void CL_ParseDownload ( msg_t *msg ) {
|
||||
// rename the file
|
||||
FS_SV_Rename ( clc.downloadTempName, clc.downloadName );
|
||||
}
|
||||
*clc.downloadTempName = *clc.downloadName = 0;
|
||||
Cvar_Set( "cl_downloadName", "" );
|
||||
|
||||
// send intentions now
|
||||
// We need this because without it, we would hold the last nextdl and then start
|
||||
|
||||
Reference in new issue
Block a user