Commit Graph

1823 Commits

Author SHA1 Message Date
Tatsuhiro Tsujikawa
e7fc2951b8 nghttp2_hd: Define dedicated struct for HPACK deflater and inflater 2014-01-26 17:53:04 +09:00
Tatsuhiro Tsujikawa
45a9f0b637 Remove nghttp2_frame_unpack_* functions 2014-01-26 16:46:18 +09:00
Tatsuhiro Tsujikawa
dba2406aba nghttp2_sesson_mem_recv: Process incoming data in streaming fashion
Now incoming data is processed in very small buffer (up to 8 bytes)
using state machine. GOAWAY debug data can get to 16K - 1, and we
don't have callback for it. Since we don't want to buffer that
amount of data just for debugging, we currently discard it.
This change also makes parse_error callback not function.
It probably be removed from API.
2014-01-26 15:44:43 +09:00
Tatsuhiro Tsujikawa
8317559090 nghttp2_hd: Implement stream header inflater
This stream inflater can inflate incoming header block in streaming
fashion. Currently, we buffer up single name/value pair, but we chose
far more smaller buffer size than HTTP/2 frame size.
2014-01-25 18:24:15 +09:00
Tatsuhiro Tsujikawa
f8a446fbeb nghttp2_hd: Rewrite huffman decoding 2014-01-24 21:56:19 +09:00
Tatsuhiro Tsujikawa
a8e4da8058 deflatehd: Fix wire is not written if length is 0 2014-01-24 21:54:00 +09:00
Tatsuhiro Tsujikawa
6540ac1bab Fix crash 2014-01-23 21:25:49 +09:00
Tatsuhiro Tsujikawa
1f4577adb9 nghttp: Use getaddrnfo directly instead of using evdns_base
evdns_base uses /etc/resolve.conf for *nix like systems,
but all platforms don't have the file (e.g., android device).
For such platforms, address resolution fails.
To fix this problem we use getaddrinfo() directly.
2014-01-23 00:29:09 +09:00
Tatsuhiro Tsujikawa
62e394b3e3 Fix memory leak 2014-01-23 00:28:23 +09:00
Tatsuhiro Tsujikawa
9cd90bcff2 nghttp: Fix host to connect when SSL/TLS is used 2014-01-22 21:55:30 +09:00
Tatsuhiro Tsujikawa
be71e1f11c nghttp: Update doc 2014-01-21 23:24:13 +09:00
Tatsuhiro Tsujikawa
5082ce5107 hpackmake.py: Add --deflate-table-size option 2014-01-21 23:04:31 +09:00
Tatsuhiro Tsujikawa
a42cb13628 hpackmake.py: Add option parser 2014-01-21 21:50:01 +09:00
Tatsuhiro Tsujikawa
201ab1a140 nghttp2_hd: Adjust maximum size to index based on table size 2014-01-21 21:49:53 +09:00
Tatsuhiro Tsujikawa
72aef67cca nghttp: Replace build-in headers completely with -H option 2014-01-20 21:54:03 +09:00
Tatsuhiro Tsujikawa
d647799c6f Take int account received data length to check flow control error 2014-01-20 19:50:11 +09:00
Tatsuhiro Tsujikawa
594e1caad6 Code cleanup 2014-01-20 00:01:10 +09:00
Tatsuhiro Tsujikawa
16497d91c1 nghttpx: Call upstream_writecb when underlying bufferevent buffer gets empty 2014-01-19 23:32:07 +09:00
Tatsuhiro Tsujikawa
dfbea797bd src: Use static_cast instead of reinterpret_cast if possible 2014-01-19 21:18:37 +09:00
Tatsuhiro Tsujikawa
660e1ec44d nghttpx: Move backend outbuf threshold to each downstream type 2014-01-19 18:07:50 +09:00
Tatsuhiro Tsujikawa
a37bc88f40 nghttpx: Rename ClientHandler::get_pending_write_length to get_outbuf_length
And other renames.
2014-01-19 17:49:04 +09:00
Tatsuhiro Tsujikawa
bacea078da nghttpx: Take into account both frontend buffer and body buffer length 2014-01-19 17:42:31 +09:00
Tatsuhiro Tsujikawa
f59a9c5c58 nghttpx: Disable TLS renegotiation properly
4ed4efc does not disable TLS renegotiation at all, if client keeps
rengotiations without sending application data. In this change,
we intercept the raw incoming data from the client and if it is a
renegotiation, drop the connection immediately.
2014-01-19 17:25:18 +09:00
Tatsuhiro Tsujikawa
6f5e1662c6 nghttpx: Handle error from Downstream::resume_read() 2014-01-19 14:42:42 +09:00
Tatsuhiro Tsujikawa
becc206ba9 nghttpx: Don't show warning WINDOW_UPDATE failure for HTTP/1 downstream 2014-01-19 00:38:11 +09:00
Tatsuhiro Tsujikawa
d0968ea609 Tear down session if GOAWAY with stream ID != 0 2014-01-19 00:37:45 +09:00
Tatsuhiro Tsujikawa
4ed4efc241 nghttpx: Disable TLS renegotiation 2014-01-18 19:53:52 +09:00
Tatsuhiro Tsujikawa
8f3d4fdeec nghttpx: Remove deprecated evbuffer_setcb, send WU before buffer gets empty 2014-01-18 18:39:25 +09:00
Tatsuhiro Tsujikawa
0872ce27f4 nghttpx: Use nghttp2_session_mem_recv instead of nghttp2_session_recv 2014-01-18 16:50:52 +09:00
Tatsuhiro Tsujikawa
50dd7ada50 nghttpx: Code cleanup 2014-01-18 16:32:22 +09:00
Tatsuhiro Tsujikawa
2a95da6bee Code cleanup 2014-01-18 16:25:44 +09:00
Tatsuhiro Tsujikawa
b6d039e888 Make nghttp2_is_fatal public API 2014-01-18 16:24:44 +09:00
Tatsuhiro Tsujikawa
2222b5ab0d Don't return NGHTTP2_ERR_STREAM_CLOSED when submitting DATA, PRIORITY, WU
Remove the check to see that stream exists at the time when submitting
DATA, PRIORITY and WINDOW_UPDATE. We will do this check when we actually
serialize and send them off to the network (or application provided
buffer).
2014-01-18 16:19:28 +09:00
Tatsuhiro Tsujikawa
59ff0b2f77 nghttpx: Propagate upstream priority change to downstream 2014-01-18 16:12:03 +09:00
Tatsuhiro Tsujikawa
68b5204f29 src: Set errno = 0 before calling strtol 2014-01-18 15:32:50 +09:00
Tatsuhiro Tsujikawa
67d4cb6367 examples: Log disconnected in delete_http2_session_data 2014-01-18 01:17:09 +09:00
Tatsuhiro Tsujikawa
2cc28863e9 examples: Fix crash if port is not in request URI 2014-01-18 01:13:04 +09:00
Tatsuhiro Tsujikawa
6cd20c55d4 tests: Fix compile error with --enable-maintainer-mode 2014-01-18 00:44:32 +09:00
Tatsuhiro Tsujikawa
0f30fb98a9 Update doc 2014-01-18 00:35:41 +09:00
Tatsuhiro Tsujikawa
0b14319675 doc, examples: Update tutorial and examples 2014-01-18 00:06:24 +09:00
Tatsuhiro Tsujikawa
e960c56aad Don't call on_request_recv_callback if header decompression failed 2014-01-17 23:49:40 +09:00
Tatsuhiro Tsujikawa
3882bbebdc Update doc 2014-01-17 22:55:36 +09:00
Tatsuhiro Tsujikawa
22a4e3eab8 Remove nghttp2_session_continue
nghttp2_session_continue is removed. Now just call
nghttp2_session_mem_recv to continue after NGHTTP2_ERR_PAUSE.
2014-01-17 22:52:30 +09:00
Tatsuhiro Tsujikawa
b2bf18d40f Code cleanup 2014-01-17 10:15:14 +09:00
Tatsuhiro Tsujikawa
5d535766bf inflate_header_block: Terminate session on compression error
Code cleanup is done as well
2014-01-17 10:13:33 +09:00
Tatsuhiro Tsujikawa
1daf6de102 Update doc 2014-01-17 09:41:39 +09:00
Tatsuhiro Tsujikawa
073e6d3a01 nghttp2_hd: Remove unused variables 2014-01-17 09:36:38 +09:00
Tatsuhiro Tsujikawa
7048c56583 python: Update to latest nghttp2_hd spec 2014-01-17 02:27:42 +09:00
Tatsuhiro Tsujikawa
707a0b4103 Move name/value validation functions to src
nghttp2 library itself now accept octet header/value pairs,
completely not restricted by HTTP/1 header name/value rule.
The applications may impose restriction about them using
validators.
2014-01-17 02:16:53 +09:00
Tatsuhiro Tsujikawa
0e4b3d435e Emit header name/value pair using callback functions
Now, in nghttp2_on_frame_recv_callback, nva and nvlen in
HEADERS and PUSH_PROMISE frames are always NULL and 0 respectively.
The header name/value pairs are emitted successive
nghttp2_on_header_callback functions. The end of header fields are
signaled with nghttp2_on_end_headers_callback function.

Since NGHTTP2_ERR_PAUSE for nghttp2_on_frame_recv_callback is
introduced to handle header block, it is now deprecated.
Instead, nghttp2_on_header_callback can be paused using
NGHTTP2_ERR_PAUSE.
2014-01-17 01:49:43 +09:00