Call the completion callback even on a fail.

This commit is contained in:
Learath Lea 2015-03-13 21:17:23 +02:00
parent 62da96b518
commit 1f34ed6740
2 changed files with 9 additions and 7 deletions

View file

@ -91,7 +91,7 @@ void CFetcher::FetcherThread(void *pUser)
}
}
bool CFetcher::FetchFile(CFetchTask *pTask)
void CFetcher::FetchFile(CFetchTask *pTask)
{
for(int i = 0; pTask->m_pDest[i] != '\0'; i++)
{
@ -126,18 +126,20 @@ bool CFetcher::FetchFile(CFetchTask *pTask)
dbg_msg("fetcher", "Downloading %s", pTask->m_pDest);
pTask->m_State = CFetchTask::STATE_RUNNING;
int ret = curl_easy_perform(m_pHandle);
io_close(File);
if(ret != CURLE_OK)
{
dbg_msg("fetcher", "Task failed. libcurl error: %s", aErr);
pTask->m_State = (ret == CURLE_ABORTED_BY_CALLBACK) ? CFetchTask::STATE_ABORTED : CFetchTask::STATE_ERROR;
return false;
}
io_close(File);
else
{
dbg_msg("fetcher", "Task done %s", pTask->m_pDest);
pTask->m_State = CFetchTask::STATE_DONE;
}
if(pTask->m_pfnCompCallback)
pTask->m_pfnCompCallback(pTask, pTask->m_pUser);
return true;
}
void CFetcher::WriteToFile(char *pData, size_t size, size_t nmemb, void *pFile)

View file

@ -25,7 +25,7 @@ public:
virtual void QueueAdd(CFetchTask *pTask, const char *pUrl, const char *pDest, int StorageType = 2, void *pUser = 0, COMPFUNC pfnCompCb = 0, PROGFUNC pfnProgCb = 0);
virtual void Escape(char *pBud, size_t size, const char *pStr);
static void FetcherThread(void *pUser);
bool FetchFile(CFetchTask *pTask);
void FetchFile(CFetchTask *pTask);
static void WriteToFile(char *pData, size_t size, size_t nmemb, void *pFile);
static int ProgressCallback(void *pUser, double DlTotal, double DlCurr, double UlTotal, double UlCurr);
};