Tatsuhiro Tsujikawa
0b005e3f22
Change the value of END_PUSH_PROMISE flag as per the spec
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
d154faa9ab
Set protocol version draft-06
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
30d3ea7c93
Use old C style comment
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
35229b250f
Treat reception of DATA in reserved stream as connection error
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
618a1e0782
Update doc
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
e278efdf38
Strict handling of connection error
...
Following cases are now treated as connection error of type
PROTOCOL_ERROR.
* Receiving HEADERS from client in reserved (local)
* Receiving PUSH_PROMISE against peer-initiated stream
* Receiving WINDOW_UPDATE against in reserved (local, remote)
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
0c9703fa2c
Remove NGHTTP2_FLAG_END_FLOW_CONTROL
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
f222403970
Update doc
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
b1ae1c30d8
Allow duplicate settings ID in SETTINGS
...
If multiple same ID are found, use the last one.
2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa
591f73e043
Return error if nghttp2_gzip_inflate is invoked after Z_STREAM_END
2013-08-21 01:03:24 +09:00
Tatsuhiro Tsujikawa
407027452c
Update doc
2013-08-17 22:34:57 +09:00
Tatsuhiro Tsujikawa
3ee7ca2cdd
Handle non-fatal error from nghttp2_submit_data
2013-08-10 15:26:12 +09:00
Tatsuhiro Tsujikawa
a52ca391a2
Do not RST_STREAM for DATA against nonexistent stream
...
This may be useful to the misbehaving implementation, but it could
result in lots of RST_STREAM, so just ignore it for now.
2013-08-10 15:13:53 +09:00
Tatsuhiro Tsujikawa
6ed8a8957b
Early termination if stream is not found
...
Add this check in nghttp2_submit_{priority, window_update, data,
push_promise}.
2013-08-10 00:02:24 +09:00
Tatsuhiro Tsujikawa
80bacd0a54
Disable local flow control in nghttp2_submit_window_update()
2013-08-09 23:46:12 +09:00
Tatsuhiro Tsujikawa
1155606d5e
Rewrite re-prioritization with PRIORITY
2013-08-09 23:40:41 +09:00
Tatsuhiro Tsujikawa
0dec04921d
Remove priority adjustment for a DATA frame
...
Simply it does not work as expected.
2013-08-09 21:21:14 +09:00
Tatsuhiro Tsujikawa
6d8ab6ed0a
Update doc
2013-08-09 01:51:45 +09:00
Tatsuhiro Tsujikawa
5dd6d86d66
Code cleanup
2013-08-09 01:46:07 +09:00
Tatsuhiro Tsujikawa
a3ff4cb50b
Rename window_size member of nghttp2_session as remote_window_size
2013-08-09 01:31:15 +09:00
Tatsuhiro Tsujikawa
19377fb3cd
Allow disabling auto WINDOW_UPDATE for connection and stream individually
...
Now NGHTTP2_OPT_NO_AUTO_WINDOW_UPDATE is split into 2 options:
NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE and
NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE.
This is preparation for the upcoming removal of END_FLOW_CONTROL
flag. For nghttpx, instead of using END_FLOW_CONTROL to disable
connection-level flow control, increase window size by large
enough value, which is friendly way to current chromium
implementation.
2013-08-09 01:23:39 +09:00
Tatsuhiro Tsujikawa
b979d2e8d2
Support increment/reduction of local window size by WINDOW_UPDATE
2013-08-09 00:58:52 +09:00
Tatsuhiro Tsujikawa
e67096fef3
Handle overflow in initial window update in stream
...
Rename window_size in nghttp2_stream as remote_window_size.
2013-08-08 21:12:49 +09:00
Tatsuhiro Tsujikawa
dcfa421d6f
Fix connection-level flow control (local)
...
Fix the bug that connection-level local window is not updated
for the data is the last part of the stream. For the stream
level window may ignore this, connection-level window must
be updated. Also this change fixes the bug that connection-level
window is not updated for the ignored DATA frames.
2013-08-07 22:02:30 +09:00
Tatsuhiro Tsujikawa
55b074e96e
Rename NGHTTP2_MAX_FRAME_SIZE as NGHTTP2_MAX_FRAME_LENGTH
2013-08-06 21:59:41 +09:00
Tatsuhiro Tsujikawa
73563de8d4
Specify max length for header value and header block
...
The max length of header block is not used right now. It will
be used when header continuation is implemented.
2013-08-06 21:57:26 +09:00
Tatsuhiro Tsujikawa
c0a5ec8562
Update API doc
2013-08-04 18:27:07 +09:00
Tatsuhiro Tsujikawa
ec733a6108
Remove unused nghttp2_mem_chunk
2013-08-04 18:03:41 +09:00
Tatsuhiro Tsujikawa
b14d9d622f
Fix error string
2013-08-03 23:45:10 +09:00
Tatsuhiro Tsujikawa
ea5a1b60cf
Change NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS
...
The previous value 100 is non-standard, and if it is not sent with
SETTINGS, session will be closed with protocol error.
2013-08-03 18:05:53 +09:00
Tatsuhiro Tsujikawa
737ac01d91
Add API for HTTP Upgrade
2013-08-03 18:05:14 +09:00
Tatsuhiro Tsujikawa
bd64619cf5
Fix segmentation fault
...
Fix segmentation fault if DATA frame is received for the stream
which is already closed.
2013-07-31 20:32:44 +09:00
Tatsuhiro Tsujikawa
061b54fb72
Update doc
2013-07-28 19:39:43 +09:00
Tatsuhiro Tsujikawa
8033152e80
Disable local flow control on FLOW_CONTROL_OPTIONS = 1
2013-07-28 19:05:51 +09:00
Tatsuhiro Tsujikawa
608a493925
Change initial window size to 65535
2013-07-27 21:26:47 +09:00
Tatsuhiro Tsujikawa
7021a9fc5e
Incremental indexing only when the entry size if less than threshold
2013-07-27 20:48:04 +09:00
Tatsuhiro Tsujikawa
f74674aa7f
Fix header compression (again)
2013-07-27 19:23:05 +09:00
Tatsuhiro Tsujikawa
ddd04e8ced
Fix header compression bug, and perform always incremental indexing
2013-07-27 00:58:38 +09:00
Tatsuhiro Tsujikawa
20173b5f61
NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS: Check least significant bit only
2013-07-26 23:11:41 +09:00
Tatsuhiro Tsujikawa
459a269049
Define HTTP/2.0 protocol version ID
2013-07-26 01:38:04 +09:00
Tatsuhiro Tsujikawa
9c54e63871
Remove bogus assert
2013-07-26 01:34:57 +09:00
Tatsuhiro Tsujikawa
e496800cb7
Fix header compression bug
2013-07-26 01:34:28 +09:00
Tatsuhiro Tsujikawa
48d7453a21
Rename SPDY terms
2013-07-25 21:18:13 +09:00
Tatsuhiro Tsujikawa
1056d8690e
Rename functions related to HEADERS
2013-07-25 21:07:38 +09:00
Tatsuhiro Tsujikawa
3cc71a707e
Rename nghttp2_headers_category members
...
Add NGHTTP2_HCAT_PUSH_RESPONSE
2013-07-25 20:57:50 +09:00
Tatsuhiro Tsujikawa
442e10cc78
Update doc
2013-07-25 02:13:13 +09:00
Tatsuhiro Tsujikawa
84cbebf4f7
Implement server push
2013-07-25 01:59:48 +09:00
Tatsuhiro Tsujikawa
321136b042
nghttp2_hd: Don't malloc if namelen/valuelen are zero
2013-07-23 23:10:53 +09:00
Tatsuhiro Tsujikawa
0000d3e7f9
Add test for nghttp2_nv_array_from_cstr
2013-07-23 23:03:18 +09:00
Tatsuhiro Tsujikawa
b7ff05c4c6
Fail session if header compression failed on send
2013-07-23 22:47:15 +09:00
Tatsuhiro Tsujikawa
65cb559431
Change priority update scheme
2013-07-23 21:33:28 +09:00
Tatsuhiro Tsujikawa
3c9e31da87
Don't substitute if same indexed header field name is already in working set
2013-07-23 02:52:08 +09:00
Tatsuhiro Tsujikawa
cca1d19d3d
Fix WINDOW_UPDATE enum value
2013-07-23 02:08:32 +09:00
Tatsuhiro Tsujikawa
ef3caffe8b
Remove push related members from nghttp2_stream
2013-07-23 00:46:55 +09:00
Tatsuhiro Tsujikawa
4b6885ce9f
Send PRIORITY with current stream priority
2013-07-23 00:36:20 +09:00
Tatsuhiro Tsujikawa
6f28d44bef
Call nghttp2_session_handle_invalid_connection if stream_id == 0 or != 0 case
2013-07-23 00:33:47 +09:00
Tatsuhiro Tsujikawa
0bcf90d32d
Support PRIORITY frame send and receive
2013-07-23 00:28:00 +09:00
Tatsuhiro Tsujikawa
9e9a7fb160
Add nghttpd and 24 bytes client connection header support
2013-07-22 21:56:19 +09:00
Tatsuhiro Tsujikawa
1dd21c1e30
Handle invalid stream ID (== 0 or != 0) cases
2013-07-21 18:40:47 +09:00
Tatsuhiro Tsujikawa
ed39044273
nghttp2_session_handle_invalid_stream: Remove stream_id parameter
2013-07-21 18:26:29 +09:00
Tatsuhiro Tsujikawa
ce47881e73
nghttp2_session_handle_parse_error: Call nghttp2_session_fail_session
2013-07-21 18:23:50 +09:00
Tatsuhiro Tsujikawa
d96da77412
Add nghttp2_session_handle_invalid_connction to simply code
2013-07-21 18:20:23 +09:00
Tatsuhiro Tsujikawa
94258cd0b8
Move NGHTTP2_PRI_* to nghttp2.h, fix too small pri data type in src
2013-07-20 01:59:43 +09:00
Tatsuhiro Tsujikawa
8b3a3efadc
Change priority increasing scheme
2013-07-20 01:58:44 +09:00
Tatsuhiro Tsujikawa
68afda92ac
Cleanup
2013-07-20 01:28:52 +09:00
Tatsuhiro Tsujikawa
b92b49f882
Cleanup
2013-07-20 01:27:26 +09:00
Tatsuhiro Tsujikawa
9c58004a86
Cleanup
2013-07-20 01:24:34 +09:00
Tatsuhiro Tsujikawa
e92b74d66e
Use substitution as long as no eviction is required
2013-07-20 01:19:00 +09:00
Tatsuhiro Tsujikawa
aa87130711
Fix uninitialized nghttp2_hd_ws_entry index
2013-07-20 01:02:01 +09:00
Tatsuhiro Tsujikawa
00b2d06850
Refactor nghttp2_hd
2013-07-20 01:02:01 +09:00
Tatsuhiro Tsujikawa
fb43f8aa93
Update doc
2013-07-20 00:28:25 +09:00
Tatsuhiro Tsujikawa
aa4df35a10
Remove NGHTTP2_OPT_MAX_RECV_CTRL_FRAME_BUFFER option
2013-07-20 00:24:25 +09:00
Tatsuhiro Tsujikawa
b5810479a4
Remove NGHTTP2_ERR_CREDENTIAL_PENDING check
2013-07-20 00:22:12 +09:00
Tatsuhiro Tsujikawa
3186dede72
Add comment
2013-07-20 00:21:07 +09:00
Tatsuhiro Tsujikawa
30d2c86a7a
Remove old zlib compression and other cleanup
2013-07-20 00:20:16 +09:00
Tatsuhiro Tsujikawa
61bf7c6b02
Integrate new header compression
2013-07-20 00:08:14 +09:00
Tatsuhiro Tsujikawa
45c2245bfb
Implement header compression draft 01
2013-07-19 16:50:31 +09:00
Tatsuhiro Tsujikawa
76b430c26b
Invoke on_invalid_frame_recv_callback on session failure
2013-07-16 23:47:56 +09:00
Tatsuhiro Tsujikawa
f9911a6251
Use realloc in nghttp2_reserve_buffer
2013-07-16 22:22:57 +09:00
Tatsuhiro Tsujikawa
a3bdda68f8
End flow control by WINDOW_UPDATE
2013-07-16 21:30:36 +09:00
Tatsuhiro Tsujikawa
d54cfb88ff
Add connection-level flow control
2013-07-16 20:54:24 +09:00
Tatsuhiro Tsujikawa
1fdaa7e59a
Disable flow control entirely with FLOW_CONTROL_OPTIONS
2013-07-16 18:26:57 +09:00
Tatsuhiro Tsujikawa
24cab312cf
Make spdycat and spdyd barely work
2013-07-16 00:15:04 +09:00
Tatsuhiro Tsujikawa
48cb017245
Implement HTTP-draft-04/2.0
2013-07-15 21:45:59 +09:00
Tatsuhiro Tsujikawa
0edce70343
Rebranding nghttp2
2013-07-13 00:43:06 +09:00
Tatsuhiro Tsujikawa
9fc5c7c299
Adjust priority of outbound DATA frames so that it does not starve others
2013-05-26 15:40:16 +09:00
Tatsuhiro Tsujikawa
f47bf214e5
Allow server initiated stream ID in associated-stream-id
2013-04-05 23:24:28 +09:00
Tatsuhiro Tsujikawa
439b34f49f
Don't allow control characters in outgoing name/value pairs
...
This check is done in spdylay_submit_* family functions and they will
return error if they found control characters.
2013-03-23 21:23:13 +09:00
Tatsuhiro Tsujikawa
10c54e44ba
Don't pack multiple empty header values in one header field
...
SPDY spec does not allow multiple empty header values in one header
field. This change makes out-going framer ignore such empty header
value if there is non-empty header value with the same name.
2013-03-23 19:31:22 +09:00
Tatsuhiro Tsujikawa
2ca7b51eb6
Fix the incoming last empty header value is not checked properly
...
This change fixes the bug that spdylay_frame_unpack_nv does not check
the size of header value if it is the last value in NULL separated
list.
2013-03-23 18:50:36 +09:00
Tatsuhiro Tsujikawa
fc0cfc7faf
Document about flags of spdylay_send_callback and spdylay_recv_callback
2013-03-01 21:01:45 +09:00
Tatsuhiro Tsujikawa
cbb819aed7
spdylay_session_prep_frame: Remove dead code
2013-01-25 01:00:12 +09:00
Tatsuhiro Tsujikawa
258c7f1e65
spdylay_frame_pack_syn_reply: Make nv_offset ssize_t
2013-01-25 00:55:30 +09:00
Tatsuhiro Tsujikawa
0649a7ea61
Add spdylay_buffer_reader_count to replace bunch of 1 byte read
2013-01-22 00:12:15 +09:00
Tatsuhiro Tsujikawa
5adfd07e7c
Fix SPDY/3 priority pack and unpack handling
2013-01-20 19:04:04 +09:00
Tatsuhiro Tsujikawa
d81827c073
Update GOAWAY INTERNAL_ERROR value according to SPDY/3 spec change
2012-11-14 21:17:04 +09:00
Tatsuhiro Tsujikawa
46e7da2166
Get rid of flags member in spdylay_map
2012-10-05 23:41:49 +09:00
Tatsuhiro Tsujikawa
24e932dfa2
Iterative treap implementation
...
This change implements spdylay_map functions in iterative approach
instead of original recursive approach. The iterative version is
overall faster than recursive one. The traversal function
(spdylay_map_each) is slightly slower but it is not noticeable.
2012-10-05 00:46:03 +09:00
Tatsuhiro Tsujikawa
58619a4f97
Enable name/value header compression on server side
2012-09-15 00:47:17 +09:00
Tatsuhiro Tsujikawa
088e4f15a2
Check frame length after packing a frame
...
If resultant length of a frame exceeds the maximum value (which is
2**24 - 1 for SPDY/2 and 3), SPDYLAY_ERR_FRAME_TOO_LARGE is used to
indicate this error. This error will be notified by
on_ctrl_not_send_callback.
2012-09-14 22:41:55 +09:00