mirror of
https://github.com/moparisthebest/curl
synced 2024-08-13 17:03:50 -04:00
http: don't consider upload done if the request isn't completely sent off
Fixes #4919 Closes #5197
This commit is contained in:
parent
3e376059bb
commit
0ef54abf52
@ -3057,7 +3057,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
|
|||||||
}
|
}
|
||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
if(!postsize)
|
if(!postsize && (http->sending != HTTPSEND_REQUEST))
|
||||||
data->req.upload_done = TRUE;
|
data->req.upload_done = TRUE;
|
||||||
|
|
||||||
if(data->req.writebytecount) {
|
if(data->req.writebytecount) {
|
||||||
|
@ -1837,15 +1837,21 @@ Curl_setup_transfer(
|
|||||||
{
|
{
|
||||||
struct SingleRequest *k = &data->req;
|
struct SingleRequest *k = &data->req;
|
||||||
struct connectdata *conn = data->conn;
|
struct connectdata *conn = data->conn;
|
||||||
|
struct HTTP *http = data->req.protop;
|
||||||
|
bool httpsending = ((conn->handler->protocol&PROTO_FAMILY_HTTP) &&
|
||||||
|
(http->sending == HTTPSEND_REQUEST));
|
||||||
DEBUGASSERT(conn != NULL);
|
DEBUGASSERT(conn != NULL);
|
||||||
DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
|
DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
|
||||||
|
|
||||||
if(conn->bits.multiplex || conn->httpversion == 20) {
|
if(conn->bits.multiplex || conn->httpversion == 20 || httpsending) {
|
||||||
/* when multiplexing, the read/write sockets need to be the same! */
|
/* when multiplexing, the read/write sockets need to be the same! */
|
||||||
conn->sockfd = sockindex == -1 ?
|
conn->sockfd = sockindex == -1 ?
|
||||||
((writesockindex == -1 ? CURL_SOCKET_BAD : conn->sock[writesockindex])) :
|
((writesockindex == -1 ? CURL_SOCKET_BAD : conn->sock[writesockindex])) :
|
||||||
conn->sock[sockindex];
|
conn->sock[sockindex];
|
||||||
conn->writesockfd = conn->sockfd;
|
conn->writesockfd = conn->sockfd;
|
||||||
|
if(httpsending)
|
||||||
|
/* special and very HTTP-specific */
|
||||||
|
writesockindex = FIRSTSOCKET;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
conn->sockfd = sockindex == -1 ?
|
conn->sockfd = sockindex == -1 ?
|
||||||
@ -1873,7 +1879,6 @@ Curl_setup_transfer(
|
|||||||
k->keepon |= KEEP_RECV;
|
k->keepon |= KEEP_RECV;
|
||||||
|
|
||||||
if(writesockindex != -1) {
|
if(writesockindex != -1) {
|
||||||
struct HTTP *http = data->req.protop;
|
|
||||||
/* HTTP 1.1 magic:
|
/* HTTP 1.1 magic:
|
||||||
|
|
||||||
Even if we require a 100-return code before uploading data, we might
|
Even if we require a 100-return code before uploading data, we might
|
||||||
|
Loading…
Reference in New Issue
Block a user