From d51d85d49eb0429ba170c13de4ee8b4c277b7937 Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Tue, 13 Oct 2009 14:34:45 -0600 Subject: Handle canceled downloads more gracefully --- src/net/download.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/net') 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 -- cgit v1.2.3-70-g09d2