diff options
Diffstat (limited to 'src/net/download.cpp')
-rw-r--r-- | src/net/download.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/net/download.cpp b/src/net/download.cpp index 061cecfd..8a5e0828 100644 --- a/src/net/download.cpp +++ b/src/net/download.cpp @@ -215,6 +215,9 @@ int Download::downloadThread(void *ptr) { switch (res) { + case CURLE_ABORTED_BY_CALLBACK: + d->mOptions.cancel = true; + break; case CURLE_COULDNT_CONNECT: default: logger->log("curl error %d: %s host: %s", @@ -222,6 +225,11 @@ int Download::downloadThread(void *ptr) break; } + if (d->mOptions.cancel) + { + break; + } + d->mUpdateFunction(d->mPtr, DOWNLOAD_STATUS_ERROR, 0, 0); if (!d->mOptions.memoryWrite) @@ -280,7 +288,11 @@ int Download::downloadThread(void *ptr) attempts++; } - if (!complete) { + if (d->mOptions.cancel) + { + // Nothing to do... + } + else if (!complete || attempts >= 3) { d->mUpdateFunction(d->mPtr, DOWNLOAD_STATUS_ERROR, 0, 0); } else @@ -291,5 +303,4 @@ int Download::downloadThread(void *ptr) return 0; } - } // namespace Net |