Commit Graph

237 Commits

Author SHA1 Message Date
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 5deef03687 Moved include of arpa/inet.h to spdylay_net.h
spdylay_net.h is compatibility layer for network related header files.
In the nature of spdylay library it should not depend on the actual
networking implementations, but we need some system headers for
optimization. Currently, arpha/inet.h and netinet/in.h are needed for
ntoh*/hton* functions.
2012-03-24 00:14:04 +09:00
Tatsuhiro Tsujikawa e9b56ab1f6 Added @DEFS@ to CPPFLAGS/CFLAGS. 2012-03-24 00:07:56 +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 488b5acec7 Sort nv after 3to2 and 2to3 translation. 2012-03-14 22:53:14 +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 6024106695 Issue stream error with the status code STREAM_IN_USE if multiple SYN_REPLY
frames are received for the same active stream ID.
2012-03-11 22:42:22 +09:00
Tatsuhiro Tsujikawa ce6dc1303e Issue session error with PROTOCOL_ERROR if SYN_STREAM with a stream ID
which is less than any previously received SYN_STREAM.
2012-03-11 19:27:33 +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 82e20192d8 Added functions to process received SETTINGS frame.
Now remote and local settings are stored separately.
The initial window size is included in SETTINGS frame, all active stream's
window sizes are now updated.
Removed the initial_window_size member from spdylay_stream because
it is the same as remote_settings's initial window size.
2012-03-10 00:10:11 +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 d05d29b507 Added SPDY/3 SETTINGS frame pack/unpack 2012-03-08 23:49:26 +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 fcde841cab Added spdylay_is_fatal 2012-03-08 00:40:17 +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 185d929d86 Translate received SPDY/2 name/value pairs into SPDY/3 style.
The callback functions receives SPDY/3 style name/value pairs.
2012-03-07 00:42:47 +09: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 7d9a7b3069 Don't return on partial write 2012-03-06 23:43:45 +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 e29bb449e9 Exposed spdylay_frame_alloc_{pack,unpack}_nv for easy performance test 2012-03-01 23:52:15 +09:00
Tatsuhiro Tsujikawa a9d9126229 Assign 0 to GOAWAY status_code for SPDY/2 2012-03-01 22:39:26 +09:00
Tatsuhiro Tsujikawa abfc100edb Added convenient function spdylay_frame_nv_norm_copy() 2012-02-28 23:38:40 +09:00
Tatsuhiro Tsujikawa e79de111a4 Added spdylay_submit_syn_reply 2012-02-28 23:27:10 +09:00
Tatsuhiro Tsujikawa 9185629604 Fixed memory leak 2012-02-28 23:25:44 +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 a452893068 Fixed the potential dead lock in flow control. 2012-02-28 21:40:19 +09:00
Tatsuhiro Tsujikawa d5cc71c636 Added status_code handling to GOAWAY 2012-02-26 16:26:38 +09:00
Tatsuhiro Tsujikawa 88cd97843f Fixed GOAWAY length in SPDY/3 2012-02-26 01:48:18 +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 895562a15b Fixed uninitialized return value in spdylay_session_new() 2012-02-25 01:41:02 +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 7652d3f4ca Added support for 4 bytes length in name/value pair. 2012-02-24 23:05:49 +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 9dbec4f2bf Small refactoring 2012-02-24 00:04:35 +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 5408a21ce9 Merged spdylay_session_pack_data_overwrite() into spdylay_session_pack_data().
spdylay_session_pack_data() now takes the maximum length of DATA payload.
2012-02-22 23:58:33 +09:00
Tatsuhiro Tsujikawa 05627f7712 Updated doc 2012-02-22 23:39:30 +09:00
Tatsuhiro Tsujikawa 33cd4b5946 Updated doc 2012-02-21 23:56:51 +09:00
Tatsuhiro Tsujikawa 11c83aae73 Updated doc 2012-02-21 23:24:16 +09:00
Tatsuhiro Tsujikawa 9fa8357bbc Made return value of spdylay_map_init() void. Updated doc. 2012-02-21 23:23:47 +09:00
Tatsuhiro Tsujikawa 37944253d2 Ensure read_callback is non-NULL for response bodies. 2012-02-21 22:04:24 +09:00
Jim Morrison 6e7025b9f5 Test that FLAG_FIN is set if the read callback is NULL. 2012-02-20 13:12:13 -08: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 4f28698572 Fixed: if bytes of one frame are received in several chunks, unpacking fails. 2012-02-19 00:05:52 +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 b182179aca Check frame length strictly for GOAWAY, RST_STREAM and PING. 2012-02-18 21:51:57 +09:00
Tatsuhiro Tsujikawa 122c619260 Fixed spdylay_frame_count_nv_space() bug. Check all data is processed in spdylay_frame_count_unpack_nv_space() 2012-02-18 17:25:13 +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
Tatsuhiro Tsujikawa 005883e363 Added TODO comment 2012-02-17 00:34:36 +09:00
Tatsuhiro Tsujikawa 4dd43fc28f Updated doc 2012-02-16 23:48:12 +09:00
Tatsuhiro Tsujikawa 6cb4259232 Merge branch 'master' of https://github.com/sorced-jim/spdylay into sorced-jim-master 2012-02-16 23:41:53 +09:00
Tatsuhiro Tsujikawa b81b5a3116 Added eof member to spdylay_data to indicate all data are read.
Ensure that if flags contains SPDYLAY_FLAG_FIN, only the last DATA frame
has FLAG_FIN set.
2012-02-16 23:38:19 +09:00
Tatsuhiro Tsujikawa d4ba423248 Reuse session->iframe.buf for all incoming frames. 2012-02-16 23:09:06 +09:00
Tatsuhiro Tsujikawa 7a6bf8e5cc Allocate bytes divisible by 4KiB when expanding buffer 2012-02-16 22:54:08 +09:00
Tatsuhiro Tsujikawa 61cfa3b9f8 Simplified error handling in spdylay_session_new 2012-02-16 22:47:49 +09:00
Tatsuhiro Tsujikawa ac1629e61b Reuse buffers when unpacking frames. 2012-02-16 22:01:34 +09:00
Tatsuhiro Tsujikawa 050f33e8f9 Reuse buffers when packing frames.
Temporal name/value buffer will be shared by unpacking frame.
2012-02-16 20:54:30 +09:00
Jim Morrison 63353ea486 Ensure read_callback is non-NULL for request bodies. 2012-02-15 14:30:36 -08:00
Jim Morrison f05a67641f Be a bit more liberal about what methods accept message bodies. 2012-02-15 13:49:02 -08:00
Jim Morrison d04449eb28 Document that url should have the query parameters. 2012-02-15 13:33:30 -08:00
Tatsuhiro Tsujikawa 85ec883d11 Lower-case names in name/value pairs in spdylay_submit_{request, response} 2012-02-15 23:54:42 +09:00
Tatsuhiro Tsujikawa e7e2c69526 Renamed spdylay_submit_cancel() as spdylay_submit_rst_stream(). 2012-02-15 23:27:19 +09:00
Tatsuhiro Tsujikawa c1aefb3ba5 Added flags argument to spdylay_submit_data() and spdylay_frame_data_init().
The intention is make spdylay_submit_data() more generic, allowing trailing
DATA and/or HEADERS frames.
2012-02-15 23:02:51 +09:00
Tatsuhiro Tsujikawa 938f51964d Respond RST_STREAM with PROTOCOL_ERROR when upper cased name is present in nv. 2012-02-15 22:11:42 +09:00
Tatsuhiro Tsujikawa f71572b835 Don't send DATA frame if RST_STREAM was queued for this stream. 2012-02-15 01:07:51 +09:00
Tatsuhiro Tsujikawa fd06d21638 Call on_stream_close_callback when server pushed SYN_STREAM has FIN flag set.
Don't mix status code and return value in
spdylay_session_on_syn_stream_received.
2012-02-15 00:45:09 +09:00
Tatsuhiro Tsujikawa 97b853254a Fixed the bug that length parameter in on_data_send_callback includes header length. 2012-02-14 01:42:00 +09:00
Tatsuhiro Tsujikawa 7abf48f061 Fixed typo 2012-02-13 01:41:35 +09:00
Tatsuhiro Tsujikawa 81307745c4 Made spdylay_outbound_item_compar() static 2012-02-13 00:48:03 +09:00
Tatsuhiro Tsujikawa a48ad800b2 When a stream is canceled by RST_STREAM, don't send further DATA on that stream. 2012-02-12 19:01:23 +09:00
Tatsuhiro Tsujikawa 9e3191a548 Updated doc 2012-02-12 17:43:50 +09:00
Tatsuhiro Tsujikawa a4961a95bd Moved spdylay_submit_* functions to spdylay_submit.c 2012-02-12 17:41:55 +09:00
Tatsuhiro Tsujikawa 8fac259285 For non-overlap case, made out and outlen left untouched 2012-02-09 22:46:26 +09:00
Tatsuhiro Tsujikawa 4f5c6b60ef Ignore control frame other than SYN_STREAM if version != SPDYLAY_PROTO_VERSION 2012-02-09 00:27:22 +09:00
Tatsuhiro Tsujikawa d7e58b5cab Updated doc 2012-02-08 23:51:52 +09:00
Tatsuhiro Tsujikawa 34f0f6be1b Refuse incoming SYN_STREAM with SPDYLAY_REFUSED_STREAM if max-concurrent-streams number is reached. 2012-02-08 23:45:48 +09:00