summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/dload.c9
-rw-r--r--lib/libalpm/dload.h1
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index 875b689c..44db5f88 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -133,11 +133,11 @@ static int dload_progress_cb(void *file, curl_off_t dltotal, curl_off_t dlnow,
* 0, 0: non-download event
* x {x>0}, x: download complete
* x {x>0, x<y}, y {y > 0}: download progress, expected total is known */
- if(current_size == total_size) {
- payload->handle->dlcb(payload->remote_name, dlnow, dltotal);
- } else if(!payload->prevprogress) {
+ if(!payload->cb_initialized) {
payload->handle->dlcb(payload->remote_name, 0, -1);
- } else if(payload->prevprogress == current_size) {
+ payload->cb_initialized = 1;
+ }
+ if(payload->prevprogress == current_size) {
payload->handle->dlcb(payload->remote_name, 0, 0);
} else {
/* do NOT include initial_size since it wasn't part of the package's
@@ -732,6 +732,7 @@ void _alpm_dload_payload_reset_for_retry(struct dload_payload *payload)
payload->initial_size += payload->prevprogress;
payload->prevprogress = 0;
payload->unlink_on_fail = 0;
+ payload->cb_initialized = 0;
}
/* vim: set noet: */
diff --git a/lib/libalpm/dload.h b/lib/libalpm/dload.h
index 6ca775a7..ac948528 100644
--- a/lib/libalpm/dload.h
+++ b/lib/libalpm/dload.h
@@ -41,6 +41,7 @@ struct dload_payload {
int errors_ok;
int unlink_on_fail;
int trust_remote_name;
+ int cb_initialized;
#ifdef HAVE_LIBCURL
CURLcode curlerr; /* last error produced by curl */
#endif