diff options
author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2014-02-14 22:02:44 +0900 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2014-02-17 23:45:58 +0100 |
commit | 035b91a26c363db566578f49aec30ab8527581a7 (patch) | |
tree | 158869798ec2e44c3647a64742d2da9f829f90b4 /lib/http.h | |
parent | e9dfdef4111dca11d3cbf84d64372af56e9d9e09 (diff) | |
download | curl-035b91a26c363db566578f49aec30ab8527581a7.tar.gz |
http2: Support HTTP POST/PUT
This patch enables HTTP POST/PUT in HTTP2.
We disabled Expect header field and chunked transfer encoding
since HTTP2 forbids them.
In HTTP1, Curl sends small upload data with request headers, but
HTTP2 requires upload data must be in DATA frame separately.
So we added some conditionals to achieve this.
Diffstat (limited to 'lib/http.h')
-rw-r--r-- | lib/http.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/http.h b/lib/http.h index db322bf96..407f7b621 100644 --- a/lib/http.h +++ b/lib/http.h @@ -158,7 +158,7 @@ struct http_conn { nghttp2_session *h2; uint8_t binsettings[H2_BINSETTINGS_LEN]; size_t binlen; /* length of the binsettings data */ - char *mem; /* points to a buffer in memory to store or read from */ + char *mem; /* points to a buffer in memory to store */ size_t len; /* size of the buffer 'mem' points to */ bool bodystarted; sending send_underlying; /* underlying send Curl_send callback */ @@ -172,6 +172,14 @@ struct http_conn { on_data_chunk */ size_t datalen; /* the number of bytes left in data */ char *inbuf; /* buffer to receive data from underlying socket */ + /* We need separate buffer for transmission and reception because we + may call nghttp2_session_send() after the + nghttp2_session_mem_recv() but mem buffer is still not full. In + this case, we wrongly sends the content of mem buffer if we share + them for both cases. */ + const uint8_t *upload_mem; /* points to a buffer to read from */ + size_t upload_len; /* size of the buffer 'upload_mem' points to */ + size_t upload_left; /* number of bytes left to upload */ #else int unused; /* prevent a compiler warning */ #endif |