mirror of
https://github.com/curl/curl.git
synced 2026-04-17 19:21:41 +03:00
fixup split the check and increment into separate functions
to deal with pausing proper and to make sure to not count non-delivered data (like when error is returned)
This commit is contained in:
parent
2e4358716c
commit
e1ea1d40cb
3 changed files with 13 additions and 4 deletions
|
|
@ -254,12 +254,14 @@ static CURLcode cw_out_ptr_flush(struct cw_out_ctx *ctx,
|
|||
break;
|
||||
wlen = max_write ? CURLMIN(blen, max_write) : blen;
|
||||
if(otype == CW_OUT_BODY)
|
||||
result = Curl_pgrs_deliver_inc(data, wlen);
|
||||
result = Curl_pgrs_deliver_check(data, wlen);
|
||||
if(!result)
|
||||
result = cw_out_cb_write(ctx, data, wcb, wcb_data, otype,
|
||||
buf, wlen, &nwritten);
|
||||
if(result)
|
||||
return result;
|
||||
if(otype == CW_OUT_BODY && nwritten)
|
||||
Curl_pgrs_deliver_inc(data, nwritten);
|
||||
*pconsumed += nwritten;
|
||||
blen -= nwritten;
|
||||
buf += nwritten;
|
||||
|
|
|
|||
|
|
@ -342,15 +342,21 @@ void Curl_pgrsStartNow(struct Curl_easy *data)
|
|||
|
||||
/* this counts how much data is delivered to the application, which
|
||||
in compressed cases may differ from downloaded amount */
|
||||
CURLcode Curl_pgrs_deliver_inc(struct Curl_easy *data, size_t delta)
|
||||
CURLcode Curl_pgrs_deliver_check(struct Curl_easy *data, size_t delta)
|
||||
{
|
||||
if(data->set.max_filesize &&
|
||||
((curl_off_t)delta > data->set.max_filesize - data->progress.deliver))
|
||||
return CURLE_FILESIZE_EXCEEDED;
|
||||
data->progress.deliver += delta;
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
/* the check is already done, this is okay */
|
||||
void Curl_pgrs_deliver_inc(struct Curl_easy *data, size_t delta)
|
||||
{
|
||||
data->progress.deliver += delta;
|
||||
}
|
||||
|
||||
|
||||
void Curl_pgrs_download_inc(struct Curl_easy *data, size_t delta)
|
||||
{
|
||||
if(delta) {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,8 @@ int Curl_pgrsDone(struct Curl_easy *data);
|
|||
void Curl_pgrsStartNow(struct Curl_easy *data);
|
||||
void Curl_pgrsSetDownloadSize(struct Curl_easy *data, curl_off_t size);
|
||||
void Curl_pgrsSetUploadSize(struct Curl_easy *data, curl_off_t size);
|
||||
CURLcode Curl_pgrs_deliver_inc(struct Curl_easy *data, size_t delta);
|
||||
CURLcode Curl_pgrs_deliver_check(struct Curl_easy *data, size_t delta);
|
||||
void Curl_pgrs_deliver_inc(struct Curl_easy *data, size_t delta);
|
||||
void Curl_pgrs_download_inc(struct Curl_easy *data, size_t delta);
|
||||
void Curl_pgrs_upload_inc(struct Curl_easy *data, size_t delta);
|
||||
void Curl_pgrsSetUploadCounter(struct Curl_easy *data, curl_off_t size);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue