mirror of
https://github.com/curl/curl.git
synced 2026-07-25 16:27:16 +03:00
- Fixed a potential data loss in Curl_client_write() when the transfer is
paused.
This commit is contained in:
parent
d1f063c62d
commit
c331c73ec6
2 changed files with 8 additions and 4 deletions
|
|
@ -425,7 +425,7 @@ static CURLcode pausewrite(struct SessionHandle *data,
|
|||
}
|
||||
|
||||
|
||||
/* client_write() sends data to the write callback(s)
|
||||
/* Curl_client_write() sends data to the write callback(s)
|
||||
|
||||
The bit pattern defines to what "streams" to write to. Body and/or header.
|
||||
The defines are in sendf.h of course.
|
||||
|
|
@ -442,6 +442,9 @@ CURLcode Curl_client_write(struct connectdata *conn,
|
|||
struct SessionHandle *data = conn->data;
|
||||
size_t wrote;
|
||||
|
||||
if(0 == len)
|
||||
len = strlen(ptr);
|
||||
|
||||
/* If reading is actually paused, we're forced to append this chunk of data
|
||||
to the already held data, but only if it is the same type as otherwise it
|
||||
can't work and it'll return error instead. */
|
||||
|
|
@ -469,9 +472,6 @@ CURLcode Curl_client_write(struct connectdata *conn,
|
|||
return CURLE_OK;
|
||||
}
|
||||
|
||||
if(0 == len)
|
||||
len = strlen(ptr);
|
||||
|
||||
if(type & CLIENTWRITE_BODY) {
|
||||
if((conn->protocol&PROT_FTP) && conn->proto.ftpc.transfertype == 'A') {
|
||||
#ifdef CURL_DOES_CONVERSIONS
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue