mirror of
https://github.com/curl/curl.git
synced 2026-08-26 21:44:10 +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;
|
break;
|
||||||
wlen = max_write ? CURLMIN(blen, max_write) : blen;
|
wlen = max_write ? CURLMIN(blen, max_write) : blen;
|
||||||
if(otype == CW_OUT_BODY)
|
if(otype == CW_OUT_BODY)
|
||||||
result = Curl_pgrs_deliver_inc(data, wlen);
|
result = Curl_pgrs_deliver_check(data, wlen);
|
||||||
if(!result)
|
if(!result)
|
||||||
result = cw_out_cb_write(ctx, data, wcb, wcb_data, otype,
|
result = cw_out_cb_write(ctx, data, wcb, wcb_data, otype,
|
||||||
buf, wlen, &nwritten);
|
buf, wlen, &nwritten);
|
||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
|
if(otype == CW_OUT_BODY && nwritten)
|
||||||
|
Curl_pgrs_deliver_inc(data, nwritten);
|
||||||
*pconsumed += nwritten;
|
*pconsumed += nwritten;
|
||||||
blen -= nwritten;
|
blen -= nwritten;
|
||||||
buf += 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
|
/* this counts how much data is delivered to the application, which
|
||||||
in compressed cases may differ from downloaded amount */
|
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 &&
|
if(data->set.max_filesize &&
|
||||||
((curl_off_t)delta > data->set.max_filesize - data->progress.deliver))
|
((curl_off_t)delta > data->set.max_filesize - data->progress.deliver))
|
||||||
return CURLE_FILESIZE_EXCEEDED;
|
return CURLE_FILESIZE_EXCEEDED;
|
||||||
data->progress.deliver += delta;
|
|
||||||
return CURLE_OK;
|
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)
|
void Curl_pgrs_download_inc(struct Curl_easy *data, size_t delta)
|
||||||
{
|
{
|
||||||
if(delta) {
|
if(delta) {
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,8 @@ int Curl_pgrsDone(struct Curl_easy *data);
|
||||||
void Curl_pgrsStartNow(struct Curl_easy *data);
|
void Curl_pgrsStartNow(struct Curl_easy *data);
|
||||||
void Curl_pgrsSetDownloadSize(struct Curl_easy *data, curl_off_t size);
|
void Curl_pgrsSetDownloadSize(struct Curl_easy *data, curl_off_t size);
|
||||||
void Curl_pgrsSetUploadSize(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_download_inc(struct Curl_easy *data, size_t delta);
|
||||||
void Curl_pgrs_upload_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);
|
void Curl_pgrsSetUploadCounter(struct Curl_easy *data, curl_off_t size);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue