mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 15:48:49 -05:00
transfer: init the infilesize from the postfields...
... with a strlen() if no size was set, and do this in the pretransfer function so that the info is set early. Otherwise, the default strlen() done on the POSTFIELDS data never sets state.infilesize. Reported-by: Vincas Razma Bug: #1294
This commit is contained in:
parent
35682764a9
commit
e54db1b053
11
lib/http.c
11
lib/http.c
@ -419,8 +419,6 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
|
||||
case HTTPREQ_POST:
|
||||
if(data->state.infilesize != -1)
|
||||
expectsend = data->state.infilesize;
|
||||
else if(data->set.postfields)
|
||||
expectsend = (curl_off_t)strlen(data->set.postfields);
|
||||
break;
|
||||
case HTTPREQ_PUT:
|
||||
if(data->state.infilesize != -1)
|
||||
@ -2559,12 +2557,9 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
|
||||
|
||||
if(conn->bits.authneg)
|
||||
postsize = 0;
|
||||
else {
|
||||
/* figure out the size of the postfields */
|
||||
postsize = (data->state.infilesize != -1)?
|
||||
data->state.infilesize:
|
||||
(data->set.postfields? (curl_off_t)strlen(data->set.postfields):-1);
|
||||
}
|
||||
else
|
||||
/* the size of the post body */
|
||||
postsize = data->state.infilesize;
|
||||
|
||||
/* We only set Content-Length and allow a custom Content-Length if
|
||||
we don't upload data chunked, as RFC2616 forbids us to set both
|
||||
|
@ -1309,8 +1309,11 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
|
||||
|
||||
if(data->set.httpreq == HTTPREQ_PUT)
|
||||
data->state.infilesize = data->set.filesize;
|
||||
else
|
||||
else {
|
||||
data->state.infilesize = data->set.postfieldsize;
|
||||
if(data->set.postfields && (data->state.infilesize == -1))
|
||||
data->state.infilesize = (curl_off_t)strlen(data->set.postfields);
|
||||
}
|
||||
|
||||
/* If there is a list of cookie files to read, do it now! */
|
||||
if(data->change.cookielist)
|
||||
|
Loading…
Reference in New Issue
Block a user