diff options
-rw-r--r-- | include/git2/remote.h | 3 | ||||
-rw-r--r-- | src/transports/smart_protocol.c | 14 |
2 files changed, 10 insertions, 7 deletions
diff --git a/include/git2/remote.h b/include/git2/remote.h index 88040d49c..d57321f03 100644 --- a/include/git2/remote.h +++ b/include/git2/remote.h @@ -455,8 +455,7 @@ struct git_remote_callbacks { /** * Textual progress from the remote. Text send over the * progress side-band will be passed to this function (this is - * the 'counting objects' output. This callback should return a value less - * than zero to cancel the operation. + * the 'counting objects' output. */ int (*progress)(const char *str, int len, void *data); diff --git a/src/transports/smart_protocol.c b/src/transports/smart_protocol.c index e5b56eaff..6f935173a 100644 --- a/src/transports/smart_protocol.c +++ b/src/transports/smart_protocol.c @@ -882,10 +882,7 @@ static int stream_thunk(void *buf, size_t size, void *data) if ((current_time - payload->last_progress_report_time) >= MIN_PROGRESS_UPDATE_INTERVAL) { payload->last_progress_report_time = current_time; - if (payload->cb(payload->pb->nr_written, payload->pb->nr_objects, payload->last_bytes, payload->cb_payload)) { - giterr_clear(); - error = GIT_EUSER; - } + error = payload->cb(payload->pb->nr_written, payload->pb->nr_objects, payload->last_bytes, payload->cb_payload); } } @@ -957,7 +954,14 @@ int git_smart__push(git_transport *transport, git_push *push) /* If progress is being reported write the final report */ if (push->transfer_progress_cb) { - push->transfer_progress_cb(push->pb->nr_written, push->pb->nr_objects, packbuilder_payload.last_bytes, push->transfer_progress_cb_payload); + error = push->transfer_progress_cb( + push->pb->nr_written, + push->pb->nr_objects, + packbuilder_payload.last_bytes, + push->transfer_progress_cb_payload); + + if (error < 0) + goto done; } if (push->status.length) { |