diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-05-28 18:30:47 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-05-30 23:14:33 +0200 |
commit | c4e6968127e876b01e5e0b4b7cdbc49d5267530c (patch) | |
tree | 7d74ba1d30f99ac91b050fbb6c5b44338c56e88f /lib/http2.c | |
parent | 842f73de58f38bd6e285e08bbd1adb6c17cb62cd (diff) | |
download | curl-c4e6968127e876b01e5e0b4b7cdbc49d5267530c.tar.gz |
url: alloc the download buffer at transfer start
... and free it as soon as the transfer is done. It removes the extra
alloc when a new size is set with setopt() and reduces memory for unused
easy handles.
In addition: the closure_handle now doesn't use an allocated buffer at
all but the smallest supported size as a stack based one.
Closes #5472
Diffstat (limited to 'lib/http2.c')
-rw-r--r-- | lib/http2.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/http2.c b/lib/http2.c index e4733c94b..7d56e2280 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -258,15 +258,14 @@ static unsigned int http2_conncheck(struct connectdata *check, void Curl_http2_setup_req(struct Curl_easy *data) { struct HTTP *http = data->req.protop; - http->bodystarted = FALSE; http->status_code = -1; http->pausedata = NULL; http->pauselen = 0; http->closed = FALSE; http->close_handled = FALSE; - http->mem = data->state.buffer; - http->len = data->set.buffer_size; + http->mem = NULL; + http->len = 0; http->memlen = 0; } @@ -2103,6 +2102,8 @@ CURLcode Curl_http2_setup(struct connectdata *conn) struct http_conn *httpc = &conn->proto.httpc; struct HTTP *stream = conn->data->req.protop; + DEBUGASSERT(conn->data->state.buffer); + stream->stream_id = -1; Curl_dyn_init(&stream->header_recvbuf, DYN_H2_HEADERS); @@ -2126,6 +2127,8 @@ CURLcode Curl_http2_setup(struct connectdata *conn) stream->upload_left = 0; stream->upload_mem = NULL; stream->upload_len = 0; + stream->mem = conn->data->state.buffer; + stream->len = conn->data->set.buffer_size; httpc->inbuflen = 0; httpc->nread_inbuf = 0; |