1
0
mirror of https://github.com/moparisthebest/spdylay synced 2024-08-13 17:03:54 -04:00
Commit Graph

205 Commits

Author SHA1 Message Date
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
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
Tatsuhiro Tsujikawa
1139502675 Removed on_ping_recv_callback. Removed last_ping_time from spdylay_session. 2012-01-31 21:29:46 +09:00
Jim Morrison
732f1cf21f Include sys/types.h 2012-01-30 17:11:14 -08:00
Tatsuhiro Tsujikawa
856d230595 The response DATA frame is now queued after SYN_STREAM/SYN_REPLY has been sent.
This is because our priority queue implementation does not have stable sort
property, so queueing SYN_STREAM, DATA in this order does not necessarily
mean SYN_STREAM will be sent first.
2012-01-30 23:55:00 +09:00
Tatsuhiro Tsujikawa
e5dc14e20c Use CLOCK_MONOTONIC_RAW 2012-01-30 22:52:56 +09:00