Tatsuhiro Tsujikawa
2e7bc014e1
Return 0 if recv_window_size is negative; add tests
2013-10-30 01:58:38 +09:00
Tatsuhiro Tsujikawa
dfa1194804
Add new API to return effective recv data/win size for connection
...
Using this feature, connection level flow control is now enabled
in nghttpx.
2013-10-30 00:51:01 +09:00
Tatsuhiro Tsujikawa
6c23c34d77
Add new API to return effective received data length and local window size
2013-10-30 00:07:35 +09:00
Tatsuhiro Tsujikawa
a4cf37306a
Enfoce flow control error strictly
...
Now we have SETTINGS synchronization, flow control error can be
detected strictly. If DATA frame is received with length > 0 and
current received window size is equal to or larger than local
window size (latter happens when we shirnk window size), it is
subject to FLOW_CONTROL_ERROR,
2013-10-29 22:46:30 +09:00
Tatsuhiro Tsujikawa
6c99ff12c9
nghttp2_hd: Rename local as deflate
2013-10-29 00:42:08 +09:00
Tatsuhiro Tsujikawa
683253e334
Declare HTTP-draft-07/2.0
2013-10-27 23:16:49 +09:00
Tatsuhiro Tsujikawa
bfa7dfb37e
Use bit shift for easy reading
2013-10-27 23:09:10 +09:00
Tatsuhiro Tsujikawa
34b3833c71
Update doc
2013-10-27 21:27:48 +09:00
Tatsuhiro Tsujikawa
67ce60544e
Change maximum frame length to 16383
2013-10-27 21:17:09 +09:00
Tatsuhiro Tsujikawa
cfb9857f27
Use FRAME_SIZE_ERROR for invalid payload length
2013-10-27 20:55:44 +09:00
Tatsuhiro Tsujikawa
431f78f008
Rename NGHTTP2_ERR_FRAME_TOO_LARGE as NGHTTP2_ERR_FRAME_SIZE_ERROR
2013-10-27 19:35:36 +09:00
Tatsuhiro Tsujikawa
5ace898392
Update error code
2013-10-27 19:31:24 +09:00
Tatsuhiro Tsujikawa
a46ccdb144
Apply initiated SETTINGS changes on reception of ACK
2013-10-27 19:22:51 +09:00
Tatsuhiro Tsujikawa
22df6f4190
nghttp2_hd: Fix bug on local_hd_table_bufsize_max > hd_table_bufsize_max
2013-10-26 23:30:48 +09:00
Tatsuhiro Tsujikawa
cbdd44c4ae
nghttp2_hd: Implement local header table size limit for encoder
2013-10-26 18:49:23 +09:00
Tatsuhiro Tsujikawa
8f8c841df0
Merge branch 'master' into hpack-exp
2013-10-25 22:51:51 +09:00
Tatsuhiro Tsujikawa
896db5b24f
API change: Add flags parameter to all submit_* functions
...
The nghttp2_submit_{request,response} family do not get this change.
2013-10-25 22:50:24 +09:00
Tatsuhiro Tsujikawa
abfc00983d
nghttp2_hd: Fix memory leak and bad free
2013-10-24 23:49:37 +09:00
Tatsuhiro Tsujikawa
0c3cb104e9
nghttp2_hd: Share static table globally
2013-10-24 22:09:40 +09:00
Tatsuhiro Tsujikawa
5a81e03497
nghttp2_hd: Add static table entry to dynamic table on emission
2013-10-24 21:52:02 +09:00
Tatsuhiro Tsujikawa
d5ccc89fc4
Update huffman table and static table
...
Use huffman table in https://github.com/grmocg/httpbis-header-compression
2013-10-21 23:56:14 +09:00
Tatsuhiro Tsujikawa
9e50ae46d9
nghttp_hd: Use NGHTTP2_HD_SIDE_{REQUEST,RESPONSE} instead of {CLIENT,SERVER}
...
This change conveys better notion about compression context.
2013-10-21 00:44:39 +09:00
Tatsuhiro Tsujikawa
8ef134a702
nghttp_hd: Refactor emit_indname_block and emit_newname_block
2013-10-21 00:22:14 +09:00
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
Tatsuhiro Tsujikawa
59286adc5e
Add int return value to nghttp2_on_unknown_frame_recv_callback
2013-08-29 23:10:18 +09:00
Tatsuhiro Tsujikawa
db4f519500
Add int return value to nghttp2_on_frame_recv_parse_error_callback
2013-08-29 23:07:07 +09:00
Tatsuhiro Tsujikawa
053c444769
Add int return value to nghttp2_on_request_recv_callback
2013-08-29 23:03:21 +09:00
Tatsuhiro Tsujikawa
81653c1d1b
Add int return value to nghttp2_on_stream_close_callback
2013-08-29 22:58:05 +09:00
Tatsuhiro Tsujikawa
5a7f65f1f7
Add int return value to on_data_send_callback
2013-08-29 21:55:04 +09:00
Tatsuhiro Tsujikawa
b9d2f9b6b0
Add int return value to on_frame_not_send_callback
2013-08-29 21:51:58 +09:00
Tatsuhiro Tsujikawa
d4852b0f11
Add int return value to on_frame_send_callback
2013-08-29 21:48:34 +09:00
Tatsuhiro Tsujikawa
a51cdaacfc
Add int return value to nghttp2_before_frame_send_callback
2013-08-29 21:45:10 +09:00
Tatsuhiro Tsujikawa
544ac9f61f
Add int return value to nghttp2_on_data_recv_callback
2013-08-29 21:41:33 +09:00
Tatsuhiro Tsujikawa
972b47d6af
Add int return value to nghttp2_on_data_chunk_recv_callback
2013-08-29 21:39:32 +09:00
Tatsuhiro Tsujikawa
fb7d22fcb9
Add int return value to nghttp2_on_invalid_frame_recv_callback
2013-08-29 21:37:26 +09:00
Tatsuhiro Tsujikawa
a59cd3be82
Add int return value to nghttp2_on_frame_recv_callback
2013-08-29 21:33:52 +09:00
Tatsuhiro Tsujikawa
39d50f9b88
Update doc
2013-08-29 00:29:25 +09:00
Tatsuhiro Tsujikawa
66e5ac03a6
Connection error if header continuation is used by peer for now
2013-08-28 23:38:56 +09:00
Tatsuhiro Tsujikawa
5c6ef84b97
Use COMPRESSION_ERROR if the cause of error comes from compressor
2013-08-28 23:32:37 +09:00
Tatsuhiro Tsujikawa
83b0c89e3c
Handle indexing entry greater than header table limit without error
2013-08-28 23:16:23 +09:00
Tatsuhiro Tsujikawa
4fe056d208
nghttp2_hd.c: Use rv != 0 instead of rv < 0
2013-08-28 21:35:18 +09:00
Tatsuhiro Tsujikawa
f0ef6e980f
Refactor nghttp2_hd_inflate_hd
2013-08-28 21:33:57 +09:00
Tatsuhiro Tsujikawa
b37f99ca03
Connection error if payload size is strictly greater than (1 << 14) - 1
...
It would be desired to add option to make this limit configurable.
Fix scripted_recv_callback in tests.
2013-08-28 02:13:57 +09:00
Tatsuhiro Tsujikawa
1f3b96e233
nghttpx: Rewrite header handling
2013-08-28 00:09:46 +09:00
Tatsuhiro Tsujikawa
82b9f78fc7
Check incoming header field name strictly
...
The validation rule is described in
http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-02#section-4.1.2
2013-08-25 17:39:29 +09:00
Tatsuhiro Tsujikawa
091f38a99d
Revise common header processing
...
Instead of emitting common headers on decoder side, encoder
now keeps track of removed common headers and encode it
as necessary.
2013-08-24 22:58:26 +09:00
Tatsuhiro Tsujikawa
2d41c99289
Connection error if header continuation is employed by peer for now
2013-08-24 19:28:57 +09:00
Tatsuhiro Tsujikawa
005e60a5ed
Rework header compression
2013-08-23 23:38:28 +09:00
Tatsuhiro Tsujikawa
93e5b9e562
Fix bug common header disappear if it is evicted
2013-08-23 03:45:26 +09:00
Tatsuhiro Tsujikawa
346fafde3f
Implement draft-ietf-httpbis-header-compression-02
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
0b005e3f22
Change the value of END_PUSH_PROMISE flag as per the spec
2013-08-23 03:33:05 +09:00