mirror of
https://github.com/moparisthebest/curl
synced 2025-02-28 17:31:46 -05:00
http2: skip the content-length parsing, detect unknown size
This commit is contained in:
parent
cd5c03aa6d
commit
03bb481598
28
lib/http2.c
28
lib/http2.c
@ -1735,28 +1735,6 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
|
|||||||
failf(conn->data, "Failed sending HTTP request: Header overflow");
|
failf(conn->data, "Failed sending HTTP request: Header overflow");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
/* Inspect Content-Length header field and retrieve the request
|
|
||||||
entity length so that we can set END_STREAM to the last DATA
|
|
||||||
frame. */
|
|
||||||
if(nva[i].namelen == 14 &&
|
|
||||||
Curl_raw_nequal("content-length", (char*)nva[i].name, 14)) {
|
|
||||||
size_t j;
|
|
||||||
stream->upload_left = 0;
|
|
||||||
if(!nva[i].valuelen)
|
|
||||||
goto fail;
|
|
||||||
for(j = 0; j < nva[i].valuelen; ++j) {
|
|
||||||
if(nva[i].value[j] < '0' || nva[i].value[j] > '9')
|
|
||||||
goto fail;
|
|
||||||
if(stream->upload_left >= CURL_OFF_T_MAX / 10)
|
|
||||||
goto fail;
|
|
||||||
stream->upload_left *= 10;
|
|
||||||
stream->upload_left += nva[i].value[j] - '0';
|
|
||||||
}
|
|
||||||
DEBUGF(infof(conn->data,
|
|
||||||
"request content-length=%"
|
|
||||||
CURL_FORMAT_CURL_OFF_T
|
|
||||||
"\n", stream->upload_left));
|
|
||||||
}
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1799,6 +1777,12 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
|
|||||||
case HTTPREQ_POST:
|
case HTTPREQ_POST:
|
||||||
case HTTPREQ_POST_FORM:
|
case HTTPREQ_POST_FORM:
|
||||||
case HTTPREQ_PUT:
|
case HTTPREQ_PUT:
|
||||||
|
if(conn->data->state.infilesize != -1)
|
||||||
|
stream->upload_left = conn->data->state.infilesize;
|
||||||
|
else
|
||||||
|
/* data sending without specifying the data amount up front */
|
||||||
|
stream->upload_left = -1; /* unknown, but not zero */
|
||||||
|
|
||||||
data_prd.read_callback = data_source_read_callback;
|
data_prd.read_callback = data_source_read_callback;
|
||||||
data_prd.source.ptr = NULL;
|
data_prd.source.ptr = NULL;
|
||||||
stream_id = nghttp2_submit_request(h2, &pri_spec, nva, nheader,
|
stream_id = nghttp2_submit_request(h2, &pri_spec, nva, nheader,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user