Alexis La Goutte
ae87a44b94
nghttp2_hd: fix It is odd that the body of 'hd_get_num_table_entries' function is fully equivalent to the body of 'get_max_index' function found by PVS Studio (V524)
2017-01-03 22:03:53 +01:00
Alexis La Goutte
87d1692e27
nghttp2_submit: fix Parameter 'flags' is always rewritten in function body before being used found by PVS Studio (V763)
2017-01-03 22:03:53 +01:00
Tatsuhiro Tsujikawa
5645cad577
Accept and ignore content-length: 0 in 204 response for now
2016-12-03 14:57:16 +09:00
Matt Rudary
5a81f2441f
Prevent undefined behavior in decode_length
2016-11-11 11:12:43 -05:00
Tatsuhiro Tsujikawa
6ad9ddcdea
Disallow content-length in 1xx, 204, or 200 to a CONNECT request
2016-11-03 17:26:32 +09:00
Tatsuhiro Tsujikawa
ca6f6511f2
Avoid memcpy against NULL src
2016-11-01 23:54:21 +09:00
Remo E
9cd695a1db
MSVC version resource support
2016-10-28 22:24:22 +09:00
Tatsuhiro Tsujikawa
0cf6848646
clang-format-3.9
2016-10-15 18:36:04 +09:00
Tatsuhiro Tsujikawa
bc0f501dd3
Replace final with fin to make clang-format-3.9 happy
2016-10-15 18:25:13 +09:00
Tatsuhiro Tsujikawa
a591001e7b
Update doc
2016-10-15 18:18:52 +09:00
Tatsuhiro Tsujikawa
1d5cde1c6b
Add missing nghttp2_debug.h
2016-10-14 23:13:42 +09:00
Tatsuhiro Tsujikawa
19340da8d4
Re-format debug text output
2016-10-14 22:59:05 +09:00
Tatsuhiro Tsujikawa
5e99531b4d
clang-format
2016-10-14 22:59:05 +09:00
Tatsuhiro Tsujikawa
bef3d47c16
Rename functions and nghttp2_debug.h to move debug macro there
2016-10-14 22:59:05 +09:00
Tatsuhiro Tsujikawa
b8f7b474b4
Fix autotools build
2016-10-14 22:04:02 +09:00
Anders Bakken
bc3dc6b765
Add set_nghttp2_debug_callback to take advantage of DEBUGF statements in
...
when building DEBUGBUILD.
2016-10-13 13:24:26 -07:00
Tatsuhiro Tsujikawa
743fc4a3c3
Use the similar naming scheme for table size as 392256e542
2016-09-11 22:25:01 +09:00
Tatsuhiro Tsujikawa
392256e542
Add nghttp2_option_set_max_deflate_dynamic_table_size() API function
...
nghttp2_option_set_max_deflate_dynamic_table_size function sets the
maximum dynamic table size for header block deflater. The default
value is 4KiB.
2016-09-11 22:13:59 +09:00
Tatsuhiro Tsujikawa
905e16cb99
Simplify session_after_frame_sent1
2016-09-11 17:18:08 +09:00
Tatsuhiro Tsujikawa
9d4e8eeb12
Simplify code
...
Move DATA frame handling code to switch-case of frame type.
2016-09-11 17:00:04 +09:00
Tatsuhiro Tsujikawa
6858cda366
Fix GOAWAY race with new incoming stream on server side
...
Revert part of 16c46114dc
to fix race
condition that incoming stream after sending GOAWAY causes connection
error. The strict stream handling introduced in the above commit does
not handle several cases well (e.g., GOAWAY race, and refusing streams
because of concurrency limit).
2016-09-09 22:08:34 +09:00
Tatsuhiro Tsujikawa
fddb019baf
Merge branch 'master' into http2-debug-state-api
2016-08-28 22:20:04 +09:00
Tatsuhiro Tsujikawa
581e0938a9
Allow NGHTTP2_ERR_PAUSE from nghttp2_data_source_read_callback
2016-08-28 21:57:10 +09:00
Tatsuhiro Tsujikawa
79b07f0ce2
Update doc
2016-08-28 00:47:38 +09:00
Tatsuhiro Tsujikawa
baa0f60dc8
Add API to get current HPACK dynamic table size
2016-08-26 23:02:51 +09:00
Tatsuhiro Tsujikawa
69aa70086a
Merge branch 'master' into http2-debug-state-api
2016-08-26 22:54:59 +09:00
Wenfeng Liu
00c80a15c0
lib: Make emit_header() return void since it always succeed.
2016-08-23 13:40:14 +00:00
Tatsuhiro Tsujikawa
e693f75670
Add nghttp2_session_get_local_settings() API function
2016-08-21 19:33:01 +09:00
Tatsuhiro Tsujikawa
759f6c0b39
Update doc
2016-08-21 19:17:51 +09:00
Tatsuhiro Tsujikawa
5cf21ec187
Add APIs to return the number of data that remote endpoint can send
...
2 APIs are added. nghttp2_session_get_local_window_size() returns the
amount of data that the remote endpoint can send without receiving
connection level WINDOW_UPDATE.
nghttp2_session_get_stream_local_window_size() returns the amount of
data that the remote endpoint can send without receiving stream level
WINDOW_UPDATE.
2016-08-21 19:01:51 +09:00
Tatsuhiro Tsujikawa
62e1d1c952
Fix typo
2016-08-21 13:29:29 +09:00
Tatsuhiro Tsujikawa
09c647fd1b
Update doc
2016-08-18 21:26:58 +09:00
Tatsuhiro Tsujikawa
d0fea96e69
Allow nonuniform buffer size in nghttp2_hd_deflate_hd_vec()
2016-08-18 21:23:17 +09:00
Tatsuhiro Tsujikawa
40d217beb1
Remove bufs_avail
2016-08-17 22:56:40 +09:00
Tatsuhiro Tsujikawa
9b864380a5
Use nghttp2_vec in nghttp2_hd_deflate_hd_vec
...
This change is for the future enhancement where we loose the
requirement about the chunk size for each buffer.
2016-08-17 21:09:29 +09:00
Tatsuhiro Tsujikawa
0e1d0400d8
Use whole chunk when performing huffman encoding
2016-08-17 21:05:04 +09:00
Wenfeng Liu
488c3588d9
lib: Malloc nghttp2_buf_chain array once in nghttp2_bufs_wrap_init2()
...
to simplify logic
2016-08-17 20:48:03 +09:00
Tatsuhiro Tsujikawa
8acef2711b
Use pointer-to-pointer idiom to construct linked list
2016-08-16 13:02:24 +09:00
Tatsuhiro Tsujikawa
c4d36aeff7
Make parameters const pointer
2016-08-16 10:55:51 +09:00
Tatsuhiro Tsujikawa
f50596e355
Merge branch 'master' of https://github.com/weliu/nghttp2 into weliu-master
2016-08-16 09:59:50 +09:00
Wenfeng Liu
abf81b5bb7
lib: Add nghttp2_hd_deflate_hd_vec() deflate API to support multiple bufs input
2016-08-15 10:28:45 +00:00
Tatsuhiro Tsujikawa
8579b8a968
Merge pull request #646 from nghttp2/invalid-header-cb
...
Add nghttp2_on_invalid_header_callback
2016-08-15 11:13:20 +09:00
Tatsuhiro Tsujikawa
4c381611a1
More doc about HPACK decoding API
2016-08-11 11:47:53 +09:00
Tatsuhiro Tsujikawa
0c7d48dede
Make result type of hd_inflate_commit_indexed void
2016-08-11 11:33:09 +09:00
Wenfeng Liu
65cc2f0515
lib: since hd_inflate_commit_indexed() always return 0, remove the
...
return value check in nghttp2_hd_inflate_hd_nv().
2016-08-11 02:00:43 +00:00
Tatsuhiro Tsujikawa
3f31424ee2
Merge branch 'master' of https://github.com/weliu/nghttp2 into weliu-master
2016-08-09 22:01:10 +09:00
Wenfeng Liu
e0119452a3
Use memeq() instead of lstreq() in lookup_token().
2016-08-09 04:15:38 +00:00
Tatsuhiro Tsujikawa
60cae325bc
Search dynamic table first for optimization
2016-08-08 00:27:16 +09:00
Tatsuhiro Tsujikawa
16c46114dc
More strict stream state handling
...
Previously, in server side, we used closed streams to detect the error
that the misbehaving client sends a frame on the incoming stream it
explicitly closed. With this commit, we make a further step, and
detect one more error case. Since we retain closed streams as long as
the sum of its size and the number of opened streams are equal or less
than max concurrent streams, we can safely say that if we get a frame
which is sent on the stream that is not found in either closed or
opened stream, it is already closed or has not existed. Then we can
send GOAWAY.
The previous code shrinks closed streams when we closed another
stream, but now it is removed. It is enough to adjust closed streams
when new incoming stream is created.
While creating this commit, we noticed that
NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS is defined as INT32_MAX. But
since SETTINGS can contain value up to UINT32_MAX, it is not enough.
However, since the stream ID space is limited to INT32_MAX, it is high
enough. We could keep this value, but this time we deprecate
NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS macro. While it is in public
header, the effect of deprecating it is negligible because of the
reason we wrote above, and usually application sets much smaller value
(say, 100) as SETTINGS_MAX_CONCURRENT_STREAMS.
2016-08-07 19:31:00 +09:00
Tatsuhiro Tsujikawa
e7e3d77c53
Merge branch 'master' of https://github.com/weliu/nghttp2 into weliu-master
2016-08-06 22:42:22 +09:00
Wenfeng Liu
af9aeee752
1. Modify genlibtokenlookup.py to remove redundant header comparisons.
...
2. Remove inline qualifier of lookup_token() in genlibtokenlookup.py.
2016-08-05 09:56:15 +00:00
Tatsuhiro Tsujikawa
b7a72b1e5a
Merge branch 'master' of https://github.com/weliu/nghttp2 into weliu-master
2016-08-04 22:25:25 +09:00
Tatsuhiro Tsujikawa
2f106dc96b
Fix wrong tree operation to avoid cycle
...
https://tools.ietf.org/html/rfc7540#section-5.3.3 explains how to
transform dependency tree to avoid circular dependency. Previously,
we wrongly always moved the dependent stream under the root stream.
The correct destination is the parent stream of the stream to
reprioritize. This commit fixes this bug.
2016-08-04 22:20:07 +09:00
Wenfeng Liu
f619286ca3
Make get_max_index() return the max index in frame, so we don't need
...
to do extra calculation
2016-08-04 01:26:13 +00:00
Tatsuhiro Tsujikawa
271f7fbbb6
Add nghttp2_on_invalid_header_callback
...
nghttp2_on_invalid_header_callback is similar to
nghttp2_on_header_callback, but the former is only called when the
invalid header field is received which is silently ignored when the
callback is not set. With this callback, application inspects the
incoming invalid field, and it also can reset stream from this
callback by returning NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE, or using
nghttp2_submit_rst_stream() directly with the error code of choice.
We also added nghttp2_on_invalid_header_callback2, which uses
reference counted header fields.
2016-08-04 00:03:58 +09:00
Tatsuhiro Tsujikawa
318235db33
Log frame's stream ID for header debug logging
...
Previously, for PUSH_PROMISE frame, we logged its promised stream ID.
But it is saner to use just frame's ID in this context.
2016-08-03 00:17:38 +09:00
Tatsuhiro Tsujikawa
8ab079ccc2
Call error callback when invalid header field is received and ignored
...
We have a code to call error callback when invalid header is received
and it is treated as stream error. But we didn't if the incoming
header is invalid, but just ignored. This generosity is required to
handle public Internet connections especially when nghttp2 is used as
forward proxy.
2016-08-03 00:13:37 +09:00
Tatsuhiro Tsujikawa
8b50cc0ece
Update doc
2016-07-21 21:18:21 +09:00
Tatsuhiro Tsujikawa
0cb0bdabec
Update doc
2016-07-13 22:01:31 +09:00
Tatsuhiro Tsujikawa
ed8d5f04bb
Update doc
2016-07-10 19:07:03 +09:00
Tatsuhiro Tsujikawa
110ca3131a
Cancel frame transmission from before_frame_send_callback
...
We define the behaviour when NGHTTP2_ERR_CANCEL is returned from
before_frame_send_callback. That is to cancel the frame passed to the
callback.
2016-07-02 19:21:08 +09:00
Tatsuhiro Tsujikawa
fdc27c9f0e
Specify 1 for 2nd parameter of fwrite as a convention
2016-06-22 23:29:09 +09:00
Tatsuhiro Tsujikawa
3aa0ebbbd6
Revert "Robust handling for ssize_t on Win32 platform"
...
This reverts commit c42296acf1
.
2016-06-22 21:29:34 +09:00
Tatsuhiro Tsujikawa
4aa79763be
Clarify code path when appending inflight_settings
2016-06-21 22:32:08 +09:00
Tatsuhiro Tsujikawa
057db65657
Rewrite session_append_inflight_settings
2016-06-21 22:30:21 +09:00
Tatsuhiro Tsujikawa
c42296acf1
Robust handling for ssize_t on Win32 platform
...
Now we define NGHTTP2_SSIZE_T which is typedef-ed to the appropriate
type depending on the platform (x86/x86_64).
See GH-616 for details
2016-06-21 22:06:20 +09:00
Tatsuhiro Tsujikawa
57259481c8
Fix typo
2016-06-15 00:42:03 +09:00
Tatsuhiro Tsujikawa
c7b0e04498
Add nghttp2_option_set_max_send_header_block_length API function
...
This function sets the maximum length of header block (a set of header
fields per HEADERS frame) to send. The length of given set of header
fields is calculated using nghttp2_hd_deflate_bound(). Previously,
this is hard-coded, and is 64KiB.
2016-06-15 00:05:15 +09:00
Alexis La Goutte
88e635e0b9
fix warning: declaration of 'free' shadows a global declaration
...
With some old OS X release
2016-06-01 08:45:13 +02:00
Tatsuhiro Tsujikawa
204f9a3ec7
Add nghttp2_session_set_local_window_size() API function
2016-05-29 23:13:11 +09:00
Tatsuhiro Tsujikawa
863fbffda4
Fix typo
2016-05-18 01:25:37 +09:00
Tatsuhiro Tsujikawa
2a96d433ec
Add nghttp2_hd_inflate_hd2() and deprecate nghttp2_hd_inflate_hd()
...
The difference between them are former has const qualifier to the |in|
parameter, which is desirable since it is effectively read-only.
2016-05-14 18:25:20 +09:00
Tatsuhiro Tsujikawa
5ff6da11b1
Refactor map remove
2016-05-14 11:34:51 +09:00
Tatsuhiro Tsujikawa
5d4f3f36e3
Fix bug that PING flags are ignored in nghttp2_submit_ping
2016-05-05 23:11:10 +09:00
Tatsuhiro Tsujikawa
dba0f35ee1
Avoid 0-length DATA if NGHTTP2_DATA_FLAG_NO_END_STREAM is set
2016-04-27 22:57:19 +09:00
Tatsuhiro Tsujikawa
3d948fd3d7
Zero fill in nghttp2_session_mem_send
2016-04-23 00:32:23 +09:00
Mike Conlen
e04e24c1c2
in nghttp2_session_send() data is declared uninitialized and used
...
after a call to nghttp2_session_mem_send_internal() which should
set it, however in nghttp2_session_mem_send_internal() it is
possible to return before setting the pointer.
This change initializes the variable to NULL where delcared and
sets the variable in nghttp2_session_mem_send_internal() to
NULL before possibly returning rather than after.
both options are not necessary but are both ideal practice
2016-04-21 22:53:19 +00:00
Tatsuhiro Tsujikawa
4041d1eb26
Don't send ALTSVC if stream is closing
2016-04-15 00:59:05 +09:00
Tatsuhiro Tsujikawa
40f3779eb1
Pass unknown SETTINGS values to nghttp2_on_frame_recv_callback
2016-04-10 16:36:04 +09:00
Tatsuhiro Tsujikawa
d88f962565
Add test for altsvc frame
2016-04-09 22:32:48 +09:00
Tatsuhiro Tsujikawa
3086d65657
altsvc: Update doc
2016-04-09 19:27:09 +09:00
Tatsuhiro Tsujikawa
d4144a7475
altsvc: Add tests, ignore altsvc if stream does not exist
2016-04-09 19:14:15 +09:00
Tatsuhiro Tsujikawa
6638ca9333
altsvc: Reduce bitfield size
2016-04-09 18:23:15 +09:00
Tatsuhiro Tsujikawa
b924ef5fff
altsvc: Discard altsvc when it is received by server in earlier point
2016-04-08 23:25:56 +09:00
Tatsuhiro Tsujikawa
df56f55f84
Assign nghttp2_frame.ext.payload early
2016-04-08 23:25:56 +09:00
Tatsuhiro Tsujikawa
31595c2416
Embed nghttp2_ext_frame_payload into nghttp2_outbound_item
2016-04-08 23:25:56 +09:00
Tatsuhiro Tsujikawa
795ee8c20f
altsvc: Receive ALTSVC frame
2016-04-08 23:25:56 +09:00
Tatsuhiro Tsujikawa
efbd48b122
altsvc: Add tx tests
2016-04-08 23:25:56 +09:00
Tatsuhiro Tsujikawa
8b5a85ae1d
altsvc: Add error handling about origin and stream_id
2016-04-08 23:25:56 +09:00
Tatsuhiro Tsujikawa
ecabef2dc7
altsvc: Add ALTSVC frame support
2016-04-08 23:25:56 +09:00
Tatsuhiro Tsujikawa
5974abad75
Run error callback when peer does not send initial SETTINGS frame
2016-04-02 18:20:49 +09:00
Tatsuhiro Tsujikawa
8667bbb823
Don't send WINDOW_UPDATE if session is being closed
2016-03-29 23:30:55 +09:00
Peter Wu
bd253e1bdd
cmake: fix Windows build with CUnit
...
failmalloc and main tests succesfully pass the test now.
2016-03-17 23:32:07 +01:00
Peter Wu
d10f149161
cmake: fix Windows support
...
Fix Windows build by defining `ssize_t` when missing and adjusting the
install commands.
Add support for ENABLE_WERROR=1 while at it.
Tested with MSVC 2013 on Windows 7 x64.
2016-03-16 17:33:20 +01:00
Peter Wu
7c55c335cc
Merge branches 'master' and 'cmake-updated' into cmake
...
Update to latest master with appropriate cmake changes at the same time.
2016-03-14 17:26:15 +01:00
Peter Wu
2ddb83206b
cmake: sync with v1.8.0-63-g37b09f6
...
Adds missing source files and configure.ac changes since
v1.7.0-93-g093eb51.
2016-03-14 17:20:37 +01:00
Jan-E
e8b62c620d
Revert change of NGHTTP2_VERSION_NUM, keep the parentheses around VERSION_NUM, not in the sed -e
2016-03-14 14:13:19 +01:00
Jan-E
0f71fbce8d
Generate nghttp2ver.h before compiling
2016-03-13 18:57:58 +01:00
Jan-E
4e2972a5dc
Use string for NGHTTP2_VERSION_NUM, e.g 0x010800: do not add parentheses
2016-03-13 18:43:44 +01:00
Jan-E
78e5417ff2
Remove -nologo: not used in VC11/VC14, throws error in VC9
2016-03-13 18:31:14 +01:00