Tatsuhiro Tsujikawa
7b7b0ebcca
Update doc
2014-05-06 18:08:41 +09:00
Tatsuhiro Tsujikawa
9125499dd0
src: Implement per-frame DATA compression
...
Currently, nghttpd server only compresses files whose extensions are
one of .html, .js, .css and .txt. nghttp advertises its support of
per-frame compression in SETTINGS frame. To implement this feature,
we added 2 public API: nghttp2_session_get_remote_settings() and
nghttp2_gzip_inflate_finished().
2014-05-03 00:02:17 +09:00
Tatsuhiro Tsujikawa
660c536275
Extend namelen and valuelen in nghttp2_nv to size_t
2014-04-30 23:08:34 +09:00
Tatsuhiro Tsujikawa
d61208b394
Update doc
2014-04-30 10:49:19 +09:00
Tatsuhiro Tsujikawa
4cf023d94c
Update doc
2014-04-30 10:28:50 +09:00
Tatsuhiro Tsujikawa
3b4aedd566
Add HPACK decoder public API
2014-04-29 15:53:46 +09:00
Tatsuhiro Tsujikawa
8c5db539b3
Change NGHTTP2_MAX_HEADER_TABLE_SIZE to 256MiB
2014-04-28 22:50:43 +09:00
Tatsuhiro Tsujikawa
6d5f402380
Add nghttp2_adjust_priority_callback
...
Callback function invoked to adjust priority value for request
HEADERS.
Since the application doesn’t know stream ID when it submits
requests, it may not be able to add correct priority value to HEADERS
frame and forced to use follwing PRIORITY frame. The purpose of this
callback is give the chance to the application to adjust priority
value with the latest information it has just before transmission so
that correct priority is included in HEADERS frame and it doesn’t
have to send additional PRIORITY frame.
2014-04-27 14:48:43 +09:00
Tatsuhiro Tsujikawa
59e42c1c69
Update doc
2014-04-25 01:39:40 +09:00
Tatsuhiro Tsujikawa
d49733a5c9
Declare h2-12 for now
2014-04-25 01:33:29 +09:00
Tatsuhiro Tsujikawa
052be3296c
Implement compressed DATA
...
The library interface supports compressed DATA. The library does not
deflate nor inflate data payload. When sending data, an application
has to compress data and set NGHTTP2_DATA_FLAG_COMPRESSED to
data_flags parameter in nghttp2_data_source_read_callback. On
receiving, flags parameter in nghttp2_on_data_chunk_recv_callback
includes NGHTTP2_FLAG_COMPRESSED. An application should check the
flags and inflate data as necessary. Since compression context is per
frame, when DATA is seen in nghttp2_on_frame_recv_callback, an
application should reset compression context.
2014-04-25 01:27:18 +09:00
Tatsuhiro Tsujikawa
6bb410d603
Implement BLOCKED frame
2014-04-25 00:38:24 +09:00
Tatsuhiro Tsujikawa
aa4d43f31e
Allow exclusive dependency to stream 0
2014-04-17 21:18:18 +09:00
Tatsuhiro Tsujikawa
ac86b51e37
Implement simplified dependency based priority
2014-04-15 22:55:07 +09:00
Tatsuhiro Tsujikawa
792938d410
Update doc
2014-04-09 00:16:04 +09:00
Tatsuhiro Tsujikawa
8f23c0c38b
Name unnamed union in nghttp2_priority_spec so that we can be C90 compatible
2014-04-05 18:40:44 +09:00
Tatsuhiro Tsujikawa
c1060f0d48
Announce h2-11
2014-04-05 18:26:48 +09:00
Tatsuhiro Tsujikawa
e7ad3633c7
nghttp2_data_source_read_callback: Replace eof with uint32_t *data_flags
...
Replace int *eof with uint32_t *data_flags so that we can easily
extend functionality if we have to (but we don't do if possible).
2014-04-05 17:59:24 +09:00
Tatsuhiro Tsujikawa
124da7720f
Fix compile error
2014-04-05 17:45:06 +09:00
Tatsuhiro Tsujikawa
d668d2448b
Hide session option from public API
...
To make adding new option easier, we decided to make the details of
option struct private and hide it from public API. We provide
functions to set individual option value.
2014-04-04 21:57:47 +09:00
Tatsuhiro Tsujikawa
1e38ceb1cd
Allow empty SETTINGS in upgrade
2014-04-04 20:23:46 +09:00
Tatsuhiro Tsujikawa
5d80d18f31
Cosmetic change
2014-04-03 16:06:03 +09:00
Tatsuhiro Tsujikawa
37e1626478
Update doc
2014-04-03 16:01:30 +09:00
Tatsuhiro Tsujikawa
b1edb1f3ae
Don't index name/value pair bearing NO_INDEX flag when forwarding it
2014-04-03 11:22:11 +09:00
Tatsuhiro Tsujikawa
c53c1dc669
nghttp2_session_resume_data: Return error if no deferred data exist
2014-04-03 00:01:35 +09:00
Tatsuhiro Tsujikawa
ef40879b5f
Refactor nghttp2_stream
...
Combine deferred_data and data into data_item and merge deferred_flags
into flags.
2014-04-02 22:55:49 +09:00
Tatsuhiro Tsujikawa
c9f90924a9
Add flags parameter to nghttp2_on_header_callback
2014-04-02 02:10:35 +09:00
Tatsuhiro Tsujikawa
24cb90806d
Add flags to nghttp2_nv structure
...
This is preliminary change for upcoming HPACK updates. The flags are
used to determine the name/value pair is indexable or not.
2014-04-01 23:17:50 +09:00
Tatsuhiro Tsujikawa
da5db205ca
Make group weight range [1, 256], inclusive
...
We do -+1 on serialization and deserialization since the field is 1
byte. This change also parameterized range so that we can change it
easily.
2014-04-01 22:54:20 +09:00
Tatsuhiro Tsujikawa
f5ead55f0e
Check payload length when submitting GOAWAY and ALTSVC
2014-04-01 21:55:29 +09:00
Tatsuhiro Tsujikawa
f785e56dba
Implement ALTSVC frame
2014-04-01 21:47:51 +09:00
Tatsuhiro Tsujikawa
34581d830d
Define NGHTTP2_CLEARTEXT_PROTO_VERSION_ID
...
This identifier string is used if HTTP/2 is used over cleartext TCP.
2014-03-30 21:30:47 +09:00
Tatsuhiro Tsujikawa
60a2c260a5
Define NGHTTP2_CLIENT_CONNECTION_PREFACE macro
...
NGHTTP2_CLIENT_CONNECTION_PREFACE has the same content with
NGHTTP2_CLIENT_CONNECTION_HEADER, which is now obsoleted by
NGHTTP2_CLIENT_CONNECTION_PREFACE.
2014-03-30 21:02:25 +09:00
Tatsuhiro Tsujikawa
ab2dc5967d
Replace HTTP/2.0 with HTTP/2
2014-03-30 19:26:37 +09:00
Tatsuhiro Tsujikawa
705051ceb7
Update doc
2014-03-30 19:00:42 +09:00
Tatsuhiro Tsujikawa
21d5986157
Fail nghttp2_submit_settings if there is pending SETTINGS frame in-flight
...
pending_local_max_concurrent_stream is now set in
nghttp2_session_add_settings, rather than after frame was sent.
2014-03-30 18:07:52 +09:00
Tatsuhiro Tsujikawa
a9d97d9d35
Update doc
2014-03-30 01:34:13 +09:00
Tatsuhiro Tsujikawa
f7162ab702
Implement dependency based priority
2014-03-30 01:24:16 +09:00
Tatsuhiro Tsujikawa
dbb82b0f9c
Make opaque_data parameter in nghttp2_submit_goaway const
2014-03-22 19:05:58 +09:00
Tatsuhiro Tsujikawa
1dfe2f8670
Add nghttp2_session_get_stream_remote_window_size public API function
2014-03-22 00:34:25 +09:00
Tatsuhiro Tsujikawa
54dab50015
Support END_SEGMENT in nghttp2_submit_data()
2014-03-06 00:19:02 +09:00
Tatsuhiro Tsujikawa
d1c1deaf03
Add promised_stream_user_data parameter to nghttp2_submit_push_promise
...
This is very useful to associate application specific data to promised
stream.
nghttp2_nv_array_copy now does not complain the header field is large.
2014-02-25 00:26:12 +09:00
Tatsuhiro Tsujikawa
5e88be0b2c
Update doc
2014-02-21 21:29:23 +09:00
Tatsuhiro Tsujikawa
fc25143418
Remove END_PUSH_PROMISE in favor of END_HEADERS
2014-02-21 21:23:51 +09:00
Tatsuhiro Tsujikawa
30b3855194
nghttp2_session_mem_send tiny doc fix
...
Patch from Dave Beckett
2014-02-19 21:18:24 +09:00
Tatsuhiro Tsujikawa
649586fff6
Add nghttp2_session_mem_send() API function
...
This function behaves like nghttp2_session_send(), but it does not
use nghttp2_send_callback to send data. Instead, it returns the
serialized data to trasmit and its length to the caller.
2014-02-18 23:23:11 +09:00
Tatsuhiro Tsujikawa
78d202ac30
Callback based padding from application
...
Now previous padding options are removed and instead we added
select_padding_callback to select padding length for each frame
by application. If this callback is not implemented by application,
no padding is added.
This change also fixes the broken session_detect_idle_stream()
if stream_id is our side.
2014-02-11 15:28:44 +09:00
Tatsuhiro Tsujikawa
118ed09da5
Allow disabling padding
2014-02-09 23:53:53 +09:00
Tatsuhiro Tsujikawa
68b5ffc1dc
Rename padding related names
2014-02-09 21:46:15 +09:00
Tatsuhiro Tsujikawa
256c97d89b
Change default padding size to 16
2014-02-09 18:27:34 +09:00
Tatsuhiro Tsujikawa
1db2195389
Implement padding for HEADERS and CONTINUATION
2014-02-09 15:17:26 +09:00
Tatsuhiro Tsujikawa
9c30ed1a64
Update flags
2014-02-09 12:39:43 +09:00
Tatsuhiro Tsujikawa
814d0f76f3
Implement DATA frame padding
2014-02-08 00:23:18 +09:00
Tatsuhiro Tsujikawa
d584888601
Renumber frame types, flags and error codes
2014-02-06 21:49:16 +09:00
Tatsuhiro Tsujikawa
112b49cb9a
Renumber SETTINGS
2014-02-06 00:26:12 +09:00
Tatsuhiro Tsujikawa
c79adf6997
Remove flow control disabling feature
2014-02-06 00:23:20 +09:00
Tatsuhiro Tsujikawa
196406da0e
Change protocol identifier to h2-10
2014-02-05 23:37:27 +09:00
Tatsuhiro Tsujikawa
9fcd35d063
Update doc
2014-02-05 23:04:42 +09:00
Tatsuhiro Tsujikawa
8c0730c281
Update doc
2014-02-01 19:46:59 +09:00
Tatsuhiro Tsujikawa
8be17f077a
Add nghttp2_check_header_name and nghttp2_check_header_value APIs
...
These are promoted to public API from src/http2.h
2014-02-01 19:31:50 +09:00
Tatsuhiro Tsujikawa
ab684a9f30
Remove nghttp2_on_request_recv_callback
...
It is easy enough to check the end of incoming data by evaluating
frame->hd.flags & NGHTTP2_FLAG_END_STREAM in on_frame_recv_callback
2014-01-29 21:56:01 +09:00
Tatsuhiro Tsujikawa
652228a9d2
Update doc
2014-01-29 21:35:39 +09:00
Tatsuhiro Tsujikawa
e186e01933
Replace on_end_headers_callback with on_begin_headers_callback
...
Previously, there is inconsistency when on_frame_recv_callback
is called between HEADERS/PUSH_PROMISE and the other frames.
For former case, it is called before header block, in latter
case, it is called after whole frame is received. To make it
consistent, we call on_frame_recv_callback for HEADERS/PUSH_PROMISE
after its frame is fully received. Since on_frame_recv_callback
can signal the end of header block, we replaced on_end_headers_callback
with on_begin_headers_callback, which is called when the reception
of the header block is started.
2014-01-29 21:23:13 +09:00
Tatsuhiro Tsujikawa
f308b7b512
Allow NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE return from on_headers_callback
2014-01-28 01:17:23 +09:00
Tatsuhiro Tsujikawa
1382067976
Update doc
2014-01-27 23:31:42 +09:00
Tatsuhiro Tsujikawa
a3082b7c1e
Remove nghttp2_on_data_recv_callback and nghttp2_on_data_send_callback
...
nghttp2_data is added to nghttp2_frame union. When DATA is
received, nghttp2_on_frame_recv_callback is called. When DATA is
sent, nghttp2_on_frame_send_callback is called.
2014-01-27 22:16:05 +09:00
Tatsuhiro Tsujikawa
545f24bc1b
Remove nghttp2_on_frame_recv_parse_error_callback
2014-01-26 23:23:07 +09:00
Tatsuhiro Tsujikawa
9314e30987
Support transmission of CONTINUATION, change nghttp2_frame_hd
...
The maximum frame size including header block is still limited
to NGHTTP2_HD_MAX_BUFFER_LENGTH, which is 32KB.
2014-01-26 23:10:33 +09:00
Tatsuhiro Tsujikawa
91401cfe26
Support CONTINUATION frame reception
2014-01-26 20:31:28 +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
0f30fb98a9
Update doc
2014-01-18 00:35:41 +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
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
Tatsuhiro Tsujikawa
95b0b6cb79
Update doc
2014-01-09 21:42:44 +09:00
Tatsuhiro Tsujikawa
74d82aac56
Update doc
2014-01-02 01:00:11 +09:00
Tatsuhiro Tsujikawa
9cb8754d09
Rename nghttp2_session_fail_session as nghttp2_session_terminate_session
2013-12-26 00:23:07 +09:00
Tatsuhiro Tsujikawa
779366640a
Update doc
2013-12-24 19:27:03 +09:00
Tatsuhiro Tsujikawa
794633f894
Add nghttp2_session_set_stream_user_data API function
2013-12-23 17:40:34 +09:00
Tatsuhiro Tsujikawa
2c1739a24e
Add comment to category in HEADERS and reorder
2013-12-22 19:23:37 +09:00
Tatsuhiro Tsujikawa
bc7473182c
Update doc
2013-12-14 19:18:14 +09:00
Tatsuhiro Tsujikawa
bcee1b27a7
Update doc
2013-12-12 00:30:15 +09:00
Tatsuhiro Tsujikawa
6c77cec270
Remove nghttp2_submit_* API functions which has char **nv parameter
...
The nghttp2_submit_{request,response}2 functions are renamed as
nghttp2_submit_{request, response}.
2013-12-08 21:39:43 +09:00
Tatsuhiro Tsujikawa
d6212a6055
Fix doc
2013-12-08 17:35:14 +09:00
Tatsuhiro Tsujikawa
6ea91e57e0
Adjust struct/class alignment
2013-12-06 23:17:38 +09:00
Tatsuhiro Tsujikawa
84d1fffb3f
Announce HTTP-draft-09/2.0
2013-12-05 23:23:39 +09:00
Tatsuhiro Tsujikawa
2a83fc7559
Add nghttp2_submit_response2
2013-11-28 21:35:48 +09:00
Tatsuhiro Tsujikawa
e57b3a2139
Set protocol ID to draft-08 temporarily
2013-11-21 21:58:45 +09:00
Tatsuhiro Tsujikawa
1f3840f4a2
Update doc
2013-11-15 00:57:15 +09:00
Tatsuhiro Tsujikawa
2ae788eddd
Replace nghttp2_set_option with nghttp2_session_{client,server}_new2
...
nghttp2_session_client_new2 and nghttp2_session_server_new2 take
additional parameters which specifies session options.
nghttp2_set_option is somewhat crumsy because of type checking.
Now we use nghttp2_opt_set, which specifies individual options with
types. We changed the value of nghttp2_opt, so this change will
require re-compile.
2013-11-08 00:12:39 +09:00
Tatsuhiro Tsujikawa
4bc44b0c0b
Implement SETTINGS_ENABLE_PUSH
...
It is not clear that SETTINGS_ENABLE_PUSH = 0 disallows HEADERS
to the reserved streams. For now, we just check the reception
and transmission of PUSH_PROMISE against SETTINGS_ENABLE_PUSH.
2013-11-02 16:53:06 +09:00
Tatsuhiro Tsujikawa
66fce93d98
Update doc
2013-10-31 02:12:48 +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
683253e334
Declare HTTP-draft-07/2.0
2013-10-27 23:16:49 +09:00
Tatsuhiro Tsujikawa
34b3833c71
Update doc
2013-10-27 21:27:48 +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
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
5add90489f
Protocol ID change for HPACK experiment
2013-10-16 01:19:06 +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
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
a3762b5b1f
Add doc about returning 0 from recv_callback
2013-09-05 23:23:17 +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
d960cf8953
Add const to read-only nghttp2_frame* parameter in callbacks
2013-09-03 21:24:14 +09: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
1f3b96e233
nghttpx: Rewrite header handling
2013-08-28 00:09:46 +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
Tatsuhiro Tsujikawa
d154faa9ab
Set protocol version draft-06
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
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
6d8ab6ed0a
Update doc
2013-08-09 01:51:45 +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
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
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
061b54fb72
Update doc
2013-07-28 19:39:43 +09:00
Tatsuhiro Tsujikawa
608a493925
Change initial window size to 65535
2013-07-27 21:26:47 +09:00
Tatsuhiro Tsujikawa
459a269049
Define HTTP/2.0 protocol version ID
2013-07-26 01:38:04 +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
cca1d19d3d
Fix WINDOW_UPDATE enum value
2013-07-23 02:08:32 +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
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
aa4df35a10
Remove NGHTTP2_OPT_MAX_RECV_CTRL_FRAME_BUFFER option
2013-07-20 00:24:25 +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
a3bdda68f8
End flow control by WINDOW_UPDATE
2013-07-16 21:30:36 +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
fc0cfc7faf
Document about flags of spdylay_send_callback and spdylay_recv_callback
2013-03-01 21:01:45 +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
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
Tatsuhiro Tsujikawa
4e5e741907
Add spdylay_npn_get_proto_list() public API function.
...
spdylay_npn_get_proto_list() returns a pointer to the supported SPDY
version list. The element of the list is spdylay_npn_proto struct. It
contains all SPDY version information this library supports. The
application can use this information to configure NPN protocol
offerings/selection.
2012-08-27 23:16:44 +09:00
Tatsuhiro Tsujikawa
c59c591ee0
Updated doc
2012-08-22 21:33:35 +09:00
Tatsuhiro Tsujikawa
c28b731ef0
Updated doc
2012-08-22 01:11:10 +09:00
Tatsuhiro Tsujikawa
bafcbfde88
Remove unused zlib.h header file from spdylay.h
2012-08-22 00:14:02 +09:00
Tatsuhiro Tsujikawa
f8fcee122a
Check that empty name and NULL value are not included in nv
2012-08-21 23:19:15 +09:00
Tatsuhiro Tsujikawa
5dcdf95a67
Fix doc
2012-08-21 01:03:22 +09:00
Tatsuhiro Tsujikawa
7cc1c73120
Updated doc
2012-08-03 22:35:38 +09:00
Tatsuhiro Tsujikawa
3c49a31a07
Fixed typo
2012-05-30 21:20:38 +09:00
Tatsuhiro Tsujikawa
4dd9c32c25
Added SPDYLAY_OPT_MAX_RECV_CTRL_FRAME_BUFFER option.
...
This option sets maximum receive buffer size for incoming control
frame. Basically the library checks the length field of the incoming
control frame. For frames with name/value header block, the library
also checks the length of inflated block is also under the limit. This
is done while incrementally inflating block. If the length of frames
with name/value header block exceeds the limit, the library will issue
RST_STREAM with FRAME_TOO_LARGE. For other frames, it will issue
GOAWAY.
2012-05-25 13:49:18 +09:00
Tatsuhiro Tsujikawa
b95e9a8c4c
Made spdylay_submit_window_update() not be bounded by recv_window_size
...
Current SPDY/3 spec does not clearly prohibit to send
delta_window_size which makes resulting window size more than initial
window size. For this reason, spdylay_submit_window_update() can send
delta_window_size in [1, (1 << 31)-1], inclusive, without bounded by
stream's recv_window_size. Of course, the application is now
responsible to keep the resulting window size <= (1 << 31)-1.
spdylay_submit_window_update() now returns
SPDYLAY_ERR_INVALID_ARGUMENT if delta_window_size is 0 or negative.
2012-05-20 16:09:57 +09:00
Tatsuhiro Tsujikawa
f96c7f8720
Updated doc
2012-05-16 23:48:27 +09:00
Tatsuhiro Tsujikawa
c53e7613c9
Renamed index in spdylay_get_credential_cert prototype to idx
...
This is because compiler may warn that name `index` shadows global
declaration if the application code uses the prototype argument names
as is.
2012-05-13 17:40:18 +09:00
Tatsuhiro Tsujikawa
5c187b950f
spdylay_data_source_read_callback can return
...
SPDYLAY_ERR_TEMPORAL_CALLBACK_FAILURE to signal stream error.
2012-05-12 18:19:05 +09:00
Tatsuhiro Tsujikawa
42c0e3c758
Renamed error as error_code in spdylay_on_ctrl_not_send_callback prototype
2012-05-11 23:33:46 +09:00
Tatsuhiro Tsujikawa
0288bedabb
Renamed FRAME_TOO_LARGE as SPDYLAY_FRAME_TOO_LARGE
2012-05-09 23:29:33 +09:00
Tatsuhiro Tsujikawa
b371a0ae19
Updated doc
2012-05-09 23:25:31 +09:00
Tatsuhiro Tsujikawa
1158de22a3
Added status_code argument to spdylay_on_invalid_ctrl_recv_callback
2012-05-09 23:10:52 +09:00
Tatsuhiro Tsujikawa
649e62bd33
Updated doc
2012-05-09 23:03:16 +09:00
Tatsuhiro Tsujikawa
d377fe0dc6
Added spdylay_strerror() public API.
2012-05-09 23:01:46 +09:00
Tatsuhiro Tsujikawa
c68a0b5e6d
Added spdylay_on_unknown_ctrl_recv_callback.
...
This callback function is invoked when the unknown frame type is received.
Added debug output using this callback to spdycat.
2012-05-09 22:41:08 +09:00
Tatsuhiro Tsujikawa
171bede1fa
Added spdylay_session_on_ctrl_recv_parse_error_callback.
...
This callback function is invoked when the received frame data could not
be parsed correctly.
Added debug output using this callback to spdycat.
2012-05-09 21:55:21 +09:00
Tatsuhiro Tsujikawa
b7429e7c2d
Added spdylay_submit_window_update() public API.
2012-05-08 23:41:59 +09:00
Tatsuhiro Tsujikawa
d6a03f74b7
Updated doc
2012-05-08 23:00:32 +09:00
Tatsuhiro Tsujikawa
13ea7c60ba
Added spdylay_session_set_option() public API.
2012-05-08 22:59:34 +09:00
Tatsuhiro Tsujikawa
5412ccf129
Renamed spdylay_gzip API. Added test for them.
2012-05-07 22:56:28 +09:00
Jim Morrison
1a384a6000
Move inflate functions to libspdylay from examples.
2012-04-30 12:36:37 -07:00
Tatsuhiro Tsujikawa
b7392acf46
Document markup fix
2012-04-25 21:33:38 +09:00
Tatsuhiro Tsujikawa
d2b189e573
Updated doc
2012-04-06 21:29:37 +09:00
Tatsuhiro Tsujikawa
08d53318cd
Updated doc
2012-04-06 02:34:45 +09:00
Tatsuhiro Tsujikawa
94650de16e
Exposed spdylay_session_fail_session() to the public API.
2012-04-06 02:16:01 +09:00
Tatsuhiro Tsujikawa
a5c7301f4b
Updated doc
2012-04-06 02:07:08 +09:00
Tatsuhiro Tsujikawa
9627d5355a
Moved SPDYLAY_SETTINGS_MAX inside spdylay_settings_id.
2012-04-06 02:04:54 +09:00
Tatsuhiro Tsujikawa
d83d1cd33a
Added CREDENTIAL frame support.
2012-04-06 01:45:39 +09:00
Tatsuhiro Tsujikawa
4456d2506d
Added callbacks for CREDENTIAL frame.
2012-04-02 22:44:37 +09:00
Tatsuhiro Tsujikawa
90c2739a9c
Renamed spdylay_frame.common as spdylay_frame.ctrl
2012-03-30 00:07:27 +09:00
Tatsuhiro Tsujikawa
ba56ed6c48
Hide spdylay_data from public API.
...
The spdylay_data contains full of implementation details and is not
used in public API. It should be hidden.
The spdylay_frame union now only contains the control frame.
2012-03-29 23:59:51 +09:00
Tatsuhiro Tsujikawa
efebc1e1af
Made SPDYLAY_PROTO_SPDY2 and SPDYLAY_PROTO_SPDY3 enum
2012-03-27 18:23:05 +09:00
Tatsuhiro Tsujikawa
200012f1b5
Removed SPDYLAY_SPDY2_PRI_LOWEST and SPDYLAY_SPDY3_PRI_LOWEST macros.
...
Made spdylay_session_get_pri_lowest() to get the lowest priority value
for the current session.
This change allows the application code to get the lowest priority value
without knowing the protocol version which the current session uses.
2012-03-26 23:35:20 +09:00
Tatsuhiro Tsujikawa
262cda86e8
Issue RST_STREAM with PROTOCOL_ERROR if invalid header block is received.
...
We say the header block is invalid if at least one of the following
condition is true:
There are duplicate header names; or the header names are not
encoded in US-ASCII character set and not lower cased; or the
header name is zero-length string; or the header value contains
multiple in-sequence NUL bytes.
spdylay_frame_unpack_nv() returns SPDYLAY_ERR_INVALID_HEADER_BLOCK
if the unpacking suceeded but it found the header block is invalid.
This means that caller treats it as success, but do additional
processing for invalid header block if it wants.
The functions calling spdylay_frame_unpack_nv() also return
SPDYLAY_ERR_INVALID_HEADER_BLOCK.
2012-03-26 23:19:58 +09:00
Tatsuhiro Tsujikawa
9e716eb635
Code cleanup: C89 and old-style-prototypes and definition.
2012-03-23 02:17:48 +09:00
Tatsuhiro Tsujikawa
f40615a3dc
Updated doc
2012-03-19 00:47:15 +09:00
Tatsuhiro Tsujikawa
33e86024d9
Updated doc
2012-03-17 23:44:49 +09:00
Tatsuhiro Tsujikawa
742a8bbac9
Added spdylay_session_mem_recv()
...
spdylay_session_mem_recv() processes input bytes as the received data
from the remote endpoint. spdylay_session_recv() uses it internally.
The spdylay_inbound_buffer and ibuf member in spdylay_session is removed.
The buffer is allocated in the stack when spdylay_session_recv() is called.
2012-03-17 23:39:38 +09:00
Tatsuhiro Tsujikawa
8f038ae4b6
Added spdylay_session_get_outbound_queue_size()
2012-03-15 23:06:28 +09:00
Tatsuhiro Tsujikawa
b8e4116f9a
Updated doc
2012-03-15 22:39:26 +09:00
Tatsuhiro Tsujikawa
a01b63b37a
Added doc about the required members for spdylay_session_callbacks when
...
it is passed to spdylay_session_{client,server}_new().
2012-03-14 00:36:53 +09:00
Tatsuhiro Tsujikawa
07b02404c3
Added API reference generator script.
...
Formatted the public APIs with Sphinx syntax.
2012-03-14 00:32:52 +09:00
Tatsuhiro Tsujikawa
686c2ea95d
Merge git://github.com/sorced-jim/spdylay into sorced-jim-master
2012-03-11 22:44:39 +09:00
Tatsuhiro Tsujikawa
8284746163
spdylay_submit_syn_stream: Return SPDYLAY_ERR_INVALID_ARGUMENT if even
...
Associated-To-Stream-ID is specified.
Check the Associated-To-Stream is active before sending SYN_STREAM.
2012-03-11 18:55:40 +09:00
Tatsuhiro Tsujikawa
94c7e89742
Renamed SPDYLAY_CONCURRENT_STREAMS_MAX as
...
SPDYLAY_INITIAL_MAX_CONCURRENT_STREAMS
2012-03-10 18:49:25 +09:00
Tatsuhiro Tsujikawa
02924b6dd0
Added spdylay_submit_settings
2012-03-10 18:41:01 +09:00
Tatsuhiro Tsujikawa
6c9e79e8ca
Use SPDY/3 name in spdylay_settings_flag.
...
Added SPDYLAY_SETTINGS_CLIENT_CERTIFICATE_VECTOR_SIZE.
2012-03-09 21:38:05 +09:00
Tatsuhiro Tsujikawa
643238813d
Added doc for spdylay_error values.
2012-03-08 22:44:17 +09:00
Tatsuhiro Tsujikawa
e2092966ef
Mentioned on_ctrl_not_send_callback in spdylay_session_send doc.
2012-03-08 22:02:48 +09:00
Tatsuhiro Tsujikawa
0a7c510147
Renamed SPDYLAY_ERR_STREAM_ALREADY_CLOSED as SPDYLAY_ERR_STREAM_CLOSED
...
Added doc for spdylay_error values
2012-03-08 00:37:18 +09:00
Tatsuhiro Tsujikawa
11020146f5
Added on_ctrl_not_send_callback.
...
This callback function is invoked after the control frame
is not sent because of the error. The error is indicated by
the error argument, which is one of the values defined in spdylay_error.
2012-03-08 00:18:18 +09:00
Jim Morrison
dc1e79f409
Fix a typo.
2012-03-06 09:02:38 -08:00
Tatsuhiro Tsujikawa
00abfc8dd3
Always accept SPDY/3 style name/value pairs from spdylay_submit_* and
...
translate them into SPDY/2 as needed.
2012-03-07 00:38:27 +09:00
Tatsuhiro Tsujikawa
e2658ca757
Added doc about callback time chart and about how to get stream ID
...
of the request submitted by spdylay_submit_request().
2012-03-06 23:00:17 +09:00
Tatsuhiro Tsujikawa
8fd2fabef8
Made spdylay_select_next_protocol() return SPDY protocol version if one of
...
SPDY versions is selected.
2012-03-02 22:52:01 +09:00
Jim Morrison
cee79961f6
Update documentation for spdylay_select_next_protocol.
2012-03-01 13:26:51 -08:00
Tatsuhiro Tsujikawa
e79de111a4
Added spdylay_submit_syn_reply
2012-02-28 23:27:10 +09:00
Tatsuhiro Tsujikawa
7b3a6a2e8b
Updated doc.
2012-02-28 23:14:32 +09:00
Tatsuhiro Tsujikawa
3ed2ab2451
Code cleanup
2012-02-28 21:42:31 +09:00
Tatsuhiro Tsujikawa
d5cc71c636
Added status_code handling to GOAWAY
2012-02-26 16:26:38 +09:00
Tatsuhiro Tsujikawa
0a723aa10f
Added spdylay_npn_get_version()
2012-02-26 01:30:41 +09:00
Tatsuhiro Tsujikawa
8693874340
Added SPDY/3 flow control.
2012-02-26 00:12:32 +09:00
Tatsuhiro Tsujikawa
4e62c75b02
Added function to pack and unpack WINDOW_UPDATE frame.
2012-02-25 01:47:37 +09:00
Tatsuhiro Tsujikawa
847830f132
Added ability to pack/unpack SPDY/3 frames.
...
Added SPDY/3 zlib dictionary from draft-mbelshe-httpbis-spdy-00.
2012-02-25 01:17:03 +09:00
Tatsuhiro Tsujikawa
995ccbc8e5
Added version argument to spdylay_frame_*_init. Added version member to
...
spdylay_session.
2012-02-24 23:33:06 +09:00
Tatsuhiro Tsujikawa
cf7da38598
Define flags separately for control and data frames.
2012-02-24 21:40:13 +09:00
Tatsuhiro Tsujikawa
946e6f41af
Updated doc
2012-02-24 00:05:45 +09:00
Tatsuhiro Tsujikawa
769150d5f7
Added spdylay_submit_headers function.
2012-02-24 00:02:29 +09:00
Tatsuhiro Tsujikawa
e182308cb7
Fixed assoc_stream_id type.
2012-02-23 23:28:46 +09:00
Tatsuhiro Tsujikawa
75bdfbf256
Made data_prd argument const.
2012-02-23 23:22:58 +09:00
Tatsuhiro Tsujikawa
9e9e281bca
Added spdylay_submit_syn_stream function.
2012-02-23 23:20:05 +09:00
Tatsuhiro Tsujikawa
a1d2325a5e
Assert where FATAL error is expected. Don't return arbitrary error code from
...
user callback. Updated doc.
2012-02-23 22:49:08 +09:00
Tatsuhiro Tsujikawa
54e4c80b96
Added stream_id argument to spdylay_data_source_read_callback
2012-02-19 23:48:39 +09:00
Tatsuhiro Tsujikawa
301eb29cd4
Added ability to postpone DATA frames for asynchronous I/O.
2012-02-19 23:42:25 +09:00
Tatsuhiro Tsujikawa
03307116a2
Send GOAWAY when spdylay_frame_unpack_* is failed with non-fatal error.
...
SPDYLAY_ERR_ZLIB is now moved back to non-fatal error and it is subject
to GOAWAY if it occurred.
2012-02-18 21:55:40 +09:00
Tatsuhiro Tsujikawa
b1da54a549
Made SPDYLAY_ERR_ZLIB FATAL error. Removed SPDYLAY_ERR_ZLIB_BUF.
...
If SPDYLAY_ERR_ZLIB is encountered, zlib context is out of sync.
So we cannot further SYN_STREAM/SYN_REPLY/HEADERS frames.
I'm not sure we should send GOAWAY in this case.
So bail out with fatal error and drop connection for now.
2012-02-18 02:19:09 +09:00