Commit Graph

109 Commits

Author SHA1 Message Date
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
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
Tatsuhiro Tsujikawa 580a2b1b1e Updated doc 2012-02-08 22:34:48 +09:00
Tatsuhiro Tsujikawa 656a4b6e72 Fixed compiler warning 2012-02-08 21:49:15 +09:00
Tatsuhiro Tsujikawa 679159878f Merge branch 'master' of https://github.com/sorced-jim/spdylay into sorced-jim-master
Conflicts:
	tests/main.c
	tests/spdylay_session_test.c
	tests/spdylay_session_test.h
2012-02-08 21:37:44 +09:00
Tatsuhiro Tsujikawa b8700259fd Changed behaviour of spdylay_select_next_protocol()
We use following algorithm to select protocol:

 1. If server's list contains "spdy/2", this function selects
    "spdy/2" and returns 1. The following steps are not taken.

 2. If server's list contains "http/1.1", this function selects
    "http/1.1" and returns 0. The following step is not taken.

 3. This function selects "spdy/2" and returns -1. (So called
    non-overlap case).
2012-02-08 21:20:50 +09:00
Jim Morrison 4298dc8a51 Erase the stream from the map after calling the on_stream_close callback 2012-02-07 14:17:38 -08:00
Tatsuhiro Tsujikawa 6904ccc023 Removed unused debug function 2012-02-08 01:28:59 +09:00
Tatsuhiro Tsujikawa 154b02c464 Set max outbound DATA frame length to 8+4KiB 2012-02-08 01:28:00 +09:00
Tatsuhiro Tsujikawa 59329b0070 Set buffer size of inbound frames to 16KiB. 2012-02-08 01:25:26 +09:00
Tatsuhiro Tsujikawa 4630dfb4fe Added spdylay_on_request_recv_callback function.
This function invoked when request from remote peer is
received.  In other words, frame with FIN flag set is received.  In
HTTP, this means HTTP request, including request body, is fully
received.
2012-02-08 00:11:44 +09:00
Tatsuhiro Tsujikawa e8a9268985 Included spdylayver.h from spdylay.h 2012-02-07 21:19:23 +09:00
Tatsuhiro Tsujikawa 5012f177d0 Fixed 2 bugs: incorrect DATA frame length and data payload is zero-cleard. 2012-02-07 02:04:00 +09:00
Tatsuhiro Tsujikawa a14b9a1ba6 Added spdylay_submit_cancel() to send RST_STREAM 2012-02-06 21:20:35 +09:00
Tatsuhiro Tsujikawa 00bed87537 Support max concurrent streams limit.
If max concurrent streams limit is reached, SYN_STREAM frames are not sent
and backed off. If other type of frame is waiting in the tx queue, it is
sent first. We introduced another priority queue for this purpose.
In this change we did not add code to send RST_STREAM when SYN_STREAM is
received but max concurrent stream is reached.
2012-02-06 00:14:19 +09:00
Tatsuhiro Tsujikawa d4c5f39cf9 Don't check multiple in-sequence NULL in spdylay_frame_count_unpack_nv_space
If we return negative error code in that function, it means frame will not
unpacked and ends up to lose any information the frame contains.
The spec says it should send RST_STREAM with PROTOCOL_ERROR, so we need
at least stream ID.
Therefore, the check should be performed in
spdylay_session_on_syn_stream_received().
2012-02-05 21:57:55 +09:00
Tatsuhiro Tsujikawa d0cd362852 Changed spdylay_select_next_protocol behaviour
It now always select "spdy/2" as a next protocol regardless whether or not
the server advertises it. The NPN draft allows this.
Returning integer version number is not flexible because the selected protcol
is just a string.
The function now returns 0 if the server advertised spdy/2, or -1.
2012-02-05 21:48:20 +09:00
Tatsuhiro Tsujikawa 8b20e83652 Rewritten spdylay_frame_unpack_nv().
We use just single buffer to store name/value headers fields, instead of
allocating memory for each name/value strings.
It is now more than 2 times faster than old one.
2012-02-04 23:09:03 +09:00
Tatsuhiro Tsujikawa 1f72165549 Added stream_user_data arg to spdylay_submit_request() to identify stream ID later easily.
Specified stream_user_data_arg can be retrieved by
spdylay_session_get_stream_user_data() function. The application code can use
this function insde spdylay_on_ctrl_send_callback() and identify stream ID
for the request associated by the stream_user_data.
The sample usage is in examples/spdycat.cc.
2012-02-04 01:37:21 +09:00
Tatsuhiro Tsujikawa 876c33c562 Merge branch 'master' of https://github.com/sorced-jim/spdylay into sorced-jim-master
Conflicts:
	examples/spdylay_ssl.cc
	tests/Makefile.am
	tests/main.c

Changes:
        spdylay_select_next_protocol() returns -1 if it fails.
        Use cunit without pkg-config because debian does not provide .pc file.
        Some doc updates to suite my taste.
        Added spdylay_npn.h
2012-02-03 23:53:43 +09:00
Jim Morrison ea60bd8c6e Add an NPN callback helper that finds the correct version of spdy 2012-02-02 16:31:11 -08:00
Tatsuhiro Tsujikawa df4a1b8da4 Updated doc 2012-02-02 23:23:35 +09:00
Tatsuhiro Tsujikawa 4030c5ccf5 Closes all server-pushed streams when original stream is closed by RST_STREAM with CANCEL from client.
Fixed spdylay_session_is_my_stream_id()
2012-02-02 23:20:25 +09:00
Tatsuhiro Tsujikawa bb6a90dc4d Added spdylay_stream_add_pushed_stream
With this function and 3 new member in spdylay_stream, we can track server-
pushed streams which associate them to this stream.
2012-02-02 21:51:52 +09:00
Tatsuhiro Tsujikawa 562278194c Added server push SYN_STREAM validation. Added spdylay_session_server_new()
We still does not check "url" is in nv.
2012-02-02 00:19:31 +09:00
Tatsuhiro Tsujikawa 24eb3a3b36 SETTINGS ID is little endian in wire format despite the fact that spec/2 says it is network byte order. 2012-02-01 01:13:17 +09:00
Tatsuhiro Tsujikawa f429cc45cb Added SETTINGS send/recv. Added missing RST_STREAM send. 2012-02-01 01:12:26 +09:00
Tatsuhiro Tsujikawa 0b75800c23 Added SETTINGS frame and its pack/unpack functions. 2012-02-01 00:26:26 +09:00
Tatsuhiro Tsujikawa 49096387c3 Added seq sort key in ob_pq to preserve the queueing order if priorit is the same. 2012-01-31 22:48:09 +09:00
Tatsuhiro Tsujikawa b87eb8987e Fixed compile error with gcc-4.4 2012-01-31 21:32:46 +09:00