X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=libcurl.c;h=72ec15d295a71fe283350b8fe5f2796d2d1b99b8;hb=refs%2Fheads%2FJuhu%2Fsdl_linux_mousefix;hp=43051547159b8c674c89fc6b089c802960b861b9;hpb=27b98f353293437387da06b79f2fc5c5d716ff16;p=xonotic%2Fdarkplaces.git diff --git a/libcurl.c b/libcurl.c index 43051547..72ec15d2 100644 --- a/libcurl.c +++ b/libcurl.c @@ -966,20 +966,21 @@ static qboolean Curl_Begin(const char *URL, const char *extraheaders, double max // already downloading the file? { - downloadinfo *di = Curl_Find(fn); - if(di) + downloadinfo *existingdownloadinfo = Curl_Find(fn); + if(existingdownloadinfo) { - Con_Printf("Can't download %s, already getting it from %s!\n", fn, CleanURL(di->url, urlbuf, sizeof(urlbuf))); + Con_Printf("Can't download %s, already getting it from %s!\n", fn, CleanURL(existingdownloadinfo->url, urlbuf, sizeof(urlbuf))); // however, if it was not for this map yet... - if(forthismap && !di->forthismap) + if(forthismap && !existingdownloadinfo->forthismap) { - di->forthismap = true; + existingdownloadinfo->forthismap = true; // this "fakes" a download attempt so the client will wait for // the download to finish and then reconnect ++numdownloads_added; } + if (curl_mutex) Thread_UnlockMutex(curl_mutex); return false; } } @@ -1003,6 +1004,7 @@ static qboolean Curl_Begin(const char *URL, const char *extraheaders, double max } } + if (curl_mutex) Thread_UnlockMutex(curl_mutex); return false; } else @@ -1010,10 +1012,10 @@ static qboolean Curl_Begin(const char *URL, const char *extraheaders, double max qfile_t *f = FS_OpenRealFile(fn, "rb", false); if(f) { - char buf[4] = {0}; - FS_Read(f, buf, sizeof(buf)); // no "-1", I will use memcmp + char b[4] = {0}; + FS_Read(f, b, sizeof(b)); // no "-1", I will use memcmp - if(memcmp(buf, "PK\x03\x04", 4) && memcmp(buf, "PACK", 4)) + if(memcmp(b, "PK\x03\x04", 4) && memcmp(b, "PACK", 4)) { Con_DPrintf("Detected non-PAK %s, clearing and NOT resuming.\n", fn); FS_Close(f); @@ -1776,7 +1778,7 @@ static qboolean Curl_SendRequirement(const char *filename, qboolean foundone, ch const char *thispack = FS_WhichPack(filename); const char *packurl; - if(!thispack) + if(!thispack || !*thispack) return false; p = strrchr(thispack, '/');