Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-05-18 | http2: fix build when NOT h2-enabled | Daniel Stenberg | |
2015-05-18 | http2: switch to use Curl_hash_destroy() | Daniel Stenberg | |
as after 4883f7019d3, the *_clean() function only flushes the hash. | |||
2015-05-18 | curlver: restore LIBCURL_VERSION_NUM defined as a full number | Daniel Stenberg | |
As it breaks configure, curl-config and test 1023 if not. | |||
2015-05-18 | hostip: fix unintended destruction of hash table | Anthony Avina | |
.. and added unit1602 for hash.c | |||
2015-05-18 | curlver: introducing new version number (checking) macros | Daniel Stenberg | |
2015-05-18 | runtests.pl: use 'h2c' now, no -14 anymore | Daniel Stenberg | |
2015-05-18 | http2: Ignore if we have stream ID not in hash in on_stream_close | Tatsuhiro Tsujikawa | |
We could get stream ID not in the hash in on_stream_close. For example, if we decided to reject stream (e.g., PUSH_PROMISE), then we don't create stream and store it in hash with its stream ID. | |||
2015-05-18 | Require nghttp2 v1.0.0 | Tatsuhiro Tsujikawa | |
This commit requires nghttp2 v1.0.0 to compile, and migrate to v1.0.0, and utilize recent version of nghttp2 to simplify the code, First we use nghttp2_option_set_no_recv_client_magic function to detect nghttp2 v1.0.0. That function only exists since v1.0.0. Since nghttp2 v0.7.5, nghttp2 ensures header field ordering, and validates received header field. If it found error, RST_STREAM with PROTOCOL_ERROR is issued. Since we require v1.0.0, we can utilize this feature to simplify libcurl code. This commit does this. Migration from 0.7 series are done based on nghttp2 migration document. For libcurl, we removed the code sending first 24 bytes client magic. It is now done by nghttp2 library. on_invalid_frame_recv callback signature changed, and is updated accordingly. | |||
2015-05-18 | http2: infof length in on_frame_send() | Daniel Stenberg | |
2015-05-18 | pipeline: switch some code over to functions | Daniel Stenberg | |
... to "compartmentalize" a bit and make it easier to change behavior when multiplexing is used instead of good old pipelining. | |||
2015-05-18 | symbols-in-versions: add CURLOPT_PIPEWAIT | Daniel Stenberg | |
2015-05-18 | CURLOPT_PIPEWAIT: added | Daniel Stenberg | |
By setting this option to 1 libcurl will wait for a connection to reveal if it is possible to pipeline/multiplex on before it continues. | |||
2015-05-18 | Curl_http_readwrite_headers: minor code simplification | Daniel Stenberg | |
2015-05-18 | IsPipeliningPossible: fixed for http2 | Daniel Stenberg | |
2015-05-18 | http2: bump the h2 buffer size to 32K for speed | Daniel Stenberg | |
2015-05-18 | http2: remove the stream from the hash in stream_close callback | Daniel Stenberg | |
... and suddenly things work much better! | |||
2015-05-18 | http2: if there is paused data, do not clear the drain field | Daniel Stenberg | |
2015-05-18 | http2: rename s/data/pausedata | Daniel Stenberg | |
2015-05-18 | http2: "stream %x" in all outputs to make it easier to search for | Daniel Stenberg | |
2015-05-18 | http2: Curl_expire() all handles with incoming traffic | Daniel Stenberg | |
... so that they'll get handled next in the multi loop. | |||
2015-05-18 | http2: don't signal settings change for same values | Daniel Stenberg | |
2015-05-18 | http2: set default concurrency, fix ConnectionExists for multiplex | Daniel Stenberg | |
2015-05-18 | bundles: store no/default/pipeline/multiplex | Daniel Stenberg | |
to allow code to act differently on the situation. Also added some more info message for the connection re-use function to make it clearer when connections are not re-used. | |||
2015-05-18 | http2: lazy init header_recvbuf | Daniel Stenberg | |
It makes us use less memory when not doing HTTP/2 and subsequently also makes us not have to cleanup HTTP/2 related data when not using HTTP/2! | |||
2015-05-18 | http2: separate multiplex/pipelining + cleanup memory leaks | Daniel Stenberg | |
2015-05-18 | CURLMOPT_PIPELINE: bit 1 is for multiplexing | Daniel Stenberg | |
2015-05-18 | http2: Fix bug that data to be drained are overwritten by pending "paused" data | Tatsuhiro Tsujikawa | |
2015-05-18 | http2: Don't call nghttp2_session_mem_recv while it is paused by a stream | Tatsuhiro Tsujikawa | |
2015-05-18 | http2: Read data left in connection buffer after pause | Tatsuhiro Tsujikawa | |
Previously when we do pause because of out of buffer, we just throw away unread data in connection buffer. This just broke protocol framing, and I saw occasional FRAME_SIZE_ERROR. This commit fix this issue by remembering how much data read, and in the next iteration, we process remaining data. | |||
2015-05-18 | http2: Fix streams get stuck | Tatsuhiro Tsujikawa | |
This commit fixes the bug that streams get stuck if stream gets some DATA, and stream->closed becomes true at the same time. Previously, in this condition, after we processed DATA, we are going to try to read data from underlying transport, but there is no data, and gets EAGAIN. There was no code path to evaludate stream->closed. | |||
2015-05-18 | http2: store incoming h2 SETTINGS | Daniel Stenberg | |
2015-05-18 | pipeline: move function to pipeline.c and make static | Daniel Stenberg | |
... as it was only used from there. | |||
2015-05-18 | IsPipeliningPossible: http2 can always "pipeline" (multiplex) | Daniel Stenberg | |
2015-05-18 | http2: remove debug logging from on_frame_recv | Daniel Stenberg | |
2015-05-18 | http2: remove the closed check in http2_recv | Daniel Stenberg | |
With the "drained" functionality we can get here slightly asynchronously so the stream have have been closed but there is pending data left to read. | |||
2015-05-18 | http2: bump the h2 buffer to 8K | Daniel Stenberg | |
2015-05-18 | http2: Curl_read should not use the single buffer | Daniel Stenberg | |
... as it does for pipelining when we're multiplexing, as we need the different buffers to store incoming data correctly for all streams. | |||
2015-05-18 | http2: more debug outputs | Daniel Stenberg | |
2015-05-18 | http2: leave WAITPERFORM when conn is multiplexed | Daniel Stenberg | |
No need to wait for our "spot" like for pipelining | |||
2015-05-18 | http2: force "drainage" of streams | Daniel Stenberg | |
... which is necessary since the socket won't be readable but there is data waiting in the buffer. | |||
2015-05-18 | http2: move the mem+len pair to the stream struct | Daniel Stenberg | |
2015-05-18 | http2: more stream-oriented data, stream ID 0 is for connections | Daniel Stenberg | |
2015-05-18 | http2: move lots of state data to the 'stream' struct | Daniel Stenberg | |
... from the connection struct. The stream one being the 'struct HTTP' which is kept in the SessionHandle struct (easy handle). lookup streams for incoming frames in the stream hash, hashing is based on the stream id and we get the SessionHandle for the incoming stream that way. | |||
2015-05-18 | HTTP: partial start at fixing up hash-lookups on http2 frame receival | Daniel Stenberg | |
2015-05-18 | http: a stream hash for h2 multiplexing | Daniel Stenberg | |
2015-05-18 | http: a stream hash for h2 multiplexing | Daniel Stenberg | |
2015-05-18 | http2: debug log when receiving unexpected stream_id | Daniel Stenberg | |
2015-05-18 | http2: move stream_id to the HTTP struct (per-stream) | Daniel Stenberg | |
2015-05-18 | Curl_http2_setup: only do it once and enable multiplex on the server | Daniel Stenberg | |
Once we know we are HTTP/2 enabled we know the server can multiplex. | |||
2015-05-18 | http: switch on "pipelining" (multiplexing) for HTTP/2 servers | Daniel Stenberg | |
... and do not blacklist any. |