Tatsuhiro Tsujikawa
28aea5c6b7
nghttp_hd: Use huffman encoding only when it is usable
...
We use huffman encoding only when its encoded length is strictly less
than the original length.
As noted in the HPACK draft, the length of name/value is now 7-bit
prefix and its MSB is 1 if the following string is huffman encoded.
2013-10-20 23:59:15 +09:00
Tatsuhiro Tsujikawa
a658f1367e
encode_length: Or-ing first byte with prefix mask
...
So that we can preserve leading bits.
2013-10-20 16:28:52 +09:00
Tatsuhiro Tsujikawa
4e4fab01b1
Merge branch 'master' into hpack-exp
...
Conflicts:
lib/nghttp2_hd.c
2013-10-18 20:06:36 +09:00
Tatsuhiro Tsujikawa
7b87d71121
nghttp2_hd: Fix missing return value handling
2013-10-18 19:48:15 +09:00
Tatsuhiro Tsujikawa
0efa6e657f
Fix outbound flow control count
...
We wrongly added the whole payload length even if we sent part of it.
2013-10-18 19:43:59 +09:00
Tatsuhiro Tsujikawa
7bd145fd23
Fix out of bound array access in decode_length
2013-10-18 19:30:04 +09:00
Tatsuhiro Tsujikawa
f7389ff2e6
Revert 622b05aa31
...
It turns out that 0-bit prefix is wrong, and the author now
clearly stated that the intention is 8-bit prefix for 8+ fields.
2013-10-18 19:28:01 +09:00
Tatsuhiro Tsujikawa
5add90489f
Protocol ID change for HPACK experiment
2013-10-16 01:19:06 +09:00
Tatsuhiro Tsujikawa
a2735ed025
Fix leak on failure
2013-10-16 00:12:33 +09:00
Tatsuhiro Tsujikawa
ed43635c7b
Updated latest initial static header table
2013-10-16 00:09:00 +09:00
Tatsuhiro Tsujikawa
50cdcca911
Implement static Huffman for header compression
...
The current implementation uses Huffman code tables described
in http://tools.ietf.org/html/draft-rpeon-httpbis-header-compression-03
2013-10-15 23:55:12 +09:00
Tatsuhiro Tsujikawa
5b1fc35e82
Make max header table size configurable
2013-10-13 19:24:21 +09:00
Tatsuhiro Tsujikawa
afd5cd0585
Remove NGHTTP2_HD_INVALID_INDEX
2013-10-13 17:44:58 +09:00
Tatsuhiro Tsujikawa
6d7bcabe4c
Don't allocate name when indexing with name in static table
2013-10-12 22:56:29 +09:00
Tatsuhiro Tsujikawa
8cf3731802
Experiment HPACK with upcoming changes
...
* remove substitution
* reversed insertion and removal from header table
* unified initial static table
2013-10-12 21:49:01 +09:00
Tatsuhiro Tsujikawa
e85418f045
Fix local window size adjustments
...
Now shrinking local window size properly limits the amount of
WINDOW_UPDATE value so that shrinked window is honored.
2013-10-12 17:02:37 +09:00
Tatsuhiro Tsujikawa
622b05aa31
Fix HPACK using 0-bit prefix instead of 8-bits
2013-10-10 23:58:33 +09:00
Tatsuhiro Tsujikawa
2b9d4efa68
Refactor predicate_*_send functions
2013-10-04 22:42:34 +09:00
Tatsuhiro Tsujikawa
252c77f775
Return NGHTTP2_ERR_INVALID_STREAM_STATE for DATA, WINDOW_UPDATE to reserved
...
Use NGHTTP2_ERR_INVALID_STREAM_STATE when trying to send DATA or
WINDOW_UPDATE to reserved stream.
Also a bit refactored nghttp2_session_predicate_window_update_send
and nghttp2_session_predicate_data_send
2013-10-04 21:59:44 +09:00
Tatsuhiro Tsujikawa
bddb4de946
Fix data_stream_id and data_flags are not assigned
2013-10-03 22:51:58 +09:00
Tatsuhiro Tsujikawa
f30a238e41
Update doc
2013-09-28 23:13:55 +09:00
Tatsuhiro Tsujikawa
21d76dcc75
Add nghttp2_session_continue API function
...
The NGHTTP2_ERR_PAUSE library error code is introduced to pause
the execution of nghttp2_session_mem_recv() when that error code
is returned from nghttp2_on_frame_recv_callback or
nghttp2_on_data_chunk_recv_callback. If this happens, the parameters
available for both callbacks are retained until the application
calls nghttp2_session_continue(). The application must retain
input bytes which was used to produce the frame.
After successful call of nghttp2_session_continue, the application
can continue to call nghttp2_session_mem_recv() to process
additional data.
2013-09-28 17:59:24 +09:00
Tatsuhiro Tsujikawa
99ba622fed
Add NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS option
...
And utilize it in nghttp to limit initial max concurrent streams.
2013-09-14 19:41:49 +09:00
Tatsuhiro Tsujikawa
94263216fb
Add nghttp2_submit_request2
...
This function is similar to nghttp2_submit_request and the
difference is it takes an array of nghttp2_nv as name/value pairs.
It is useful if name/value pairs is not NULL-terminated in the
application code.
2013-09-11 00:55:35 +09:00
Tatsuhiro Tsujikawa
98273b7db1
nghttp2_pack_settings_payload: Make iv const
...
The reordering iv in the comment is no longer applied to the current
code base, therefore it is removed and iv is made to const pointer.
2013-09-09 21:30:39 +09:00
Daniel Stenberg
a1c3f89c72
nghttp2_pack_settings_payload: added a buffer size argument
...
To make it less likely that a user gets a buffer overflow if a
too small buffer is used.
2013-09-09 21:22:27 +09:00
Tatsuhiro Tsujikawa
f233a1a45e
nghttp2.h: mention where user_data is set in the other callbacks as well
2013-09-07 23:45:18 +09:00
Daniel Stenberg
f7dffc69b3
nghttp2.h: mention where user_data is set in the send_callback docs
...
Just to make it easier to find the info.
2013-09-07 21:00:51 +09:00
Daniel Stenberg
2bf08650de
nghttp2.h: clarify nghttp2_pack_settings_payload docs
2013-09-07 20:53:49 +09:00
Tatsuhiro Tsujikawa
c751a6e935
Fix cosmetic errors
2013-09-07 16:38:21 +09:00
Tatsuhiro Tsujikawa
2c127b5cb6
Remove unused functions/macros
2013-09-07 15:48:16 +09:00
Tatsuhiro Tsujikawa
3390c2356e
Update doc
2013-09-07 15:28:43 +09:00
Tatsuhiro Tsujikawa
4db8338012
Fix resource leak
2013-09-07 01:45:54 +09:00
Tatsuhiro Tsujikawa
4dcf9ad4f2
Make hd encoder ordering aware and one-pass
...
The encoder algorithm is simplified and it now preserves ordering
of the headers. It also becomes one-pass encoder.
2013-09-06 21:53:28 +09:00
Tatsuhiro Tsujikawa
16076cbc2f
Increase NGHTTP2_HD_MAX_ENTRY_SIZE to 3072
2013-09-06 00:17:46 +09:00
Tatsuhiro Tsujikawa
a3762b5b1f
Add doc about returning 0 from recv_callback
2013-09-05 23:23:17 +09:00
Tatsuhiro Tsujikawa
87abc8b951
nghttp2_session_on_window_update_received: Split into 2 functions
2013-09-05 23:21:00 +09:00
Tatsuhiro Tsujikawa
464f141593
Refactor deeply nested if blocks
2013-09-05 23:17:16 +09:00
Tatsuhiro Tsujikawa
2c264f60a6
Update doc
2013-09-04 21:53:38 +09:00
Tatsuhiro Tsujikawa
61c4250e20
nghttp2_info: Format doc for API doc generator
2013-09-04 21:46:35 +09:00
Daniel Stenberg
2f992a68f8
NGHTTP2_VERSION_NUM: have configure generate the define
2013-09-04 21:30:00 +09:00
Daniel Stenberg
66b89006d5
nghttp2_version: new function, returns info about this nghttp2
...
This returns run-time information about the lib
2013-09-04 21:30:00 +09:00
Daniel Stenberg
e8ca112749
nghttp2.h: avoid compiler warnings due to comma after last enum
...
warning: comma at end of enumerator list [-Werror=pedantic]
2013-09-04 00:28:38 +09:00
Tatsuhiro Tsujikawa
7a9cff9b5a
Fix typo
2013-09-03 21:44:18 +09:00
Tatsuhiro Tsujikawa
faae05157c
Merge branch 'bagder-master'
2013-09-03 21:43:42 +09:00
Tatsuhiro Tsujikawa
1723912f35
Call nghttp2_hd_end_headers from nghttp2_hd_deflate_hd
2013-09-03 21:41:22 +09:00
Tatsuhiro Tsujikawa
d960cf8953
Add const to read-only nghttp2_frame* parameter in callbacks
2013-09-03 21:24:14 +09:00
Daniel Stenberg
96446ff295
libnghttp2.pc: use full name, fix Libs.private
...
Since the name of the file is 'libnghttp2*' I think we should use the
full name within it as well (for the Name: field), as it gets confusing
otherwise for users and for pkg-config.
Also, 'Requires.private' breaks pkg-config's ability to extract -I etc
from the Cflags below it. I believe it should be 'Libs.private' and the
right side should then list the libs with -l.
With these changes, I've successfully written a configure script to
find and use libnghttp2.
2013-09-02 23:05:39 +02:00
Tatsuhiro Tsujikawa
a7bd4f33a3
Call on_stream_close_callback for stream in NGHTTP2_STREAM_INITIAL state
...
We call on_stream_close_callback even if stream->state is
NGHTTP2_STREAM_INITIAL. This will happen while sending request
HEADERS, a local endpoint receives RST_STREAM for that
stream. It may be PROTOCOL_ERROR, but without notifying stream
closure will hang the stream in a local endpoint.
2013-09-02 23:09:36 +09:00
Daniel Stenberg
d192a602f4
session: remove unused struct field 'version'
...
Also the comment referred to non-existing SPDY defines
2013-09-01 16:04:04 +02:00