mirror of
https://github.com/moparisthebest/spdylay
synced 2024-12-21 23:28:52 -05:00
Allow server initiated stream ID in associated-stream-id
This commit is contained in:
parent
34e119fde2
commit
f47bf214e5
@ -586,8 +586,7 @@ static int spdylay_session_predicate_syn_stream_send
|
|||||||
if(frame->assoc_stream_id != 0) {
|
if(frame->assoc_stream_id != 0) {
|
||||||
/* Check associated stream is active. */
|
/* Check associated stream is active. */
|
||||||
/* We assume here that if frame->assoc_stream_id != 0,
|
/* We assume here that if frame->assoc_stream_id != 0,
|
||||||
session->server is always 1 and frame->assoc_stream_id is
|
session->server is always 1. */
|
||||||
odd. */
|
|
||||||
if(spdylay_session_get_stream(session, frame->assoc_stream_id) ==
|
if(spdylay_session_get_stream(session, frame->assoc_stream_id) ==
|
||||||
NULL) {
|
NULL) {
|
||||||
return SPDYLAY_ERR_STREAM_CLOSED;
|
return SPDYLAY_ERR_STREAM_CLOSED;
|
||||||
@ -1642,7 +1641,6 @@ static int spdylay_session_validate_syn_stream(spdylay_session *session,
|
|||||||
return SPDYLAY_INVALID_STREAM;
|
return SPDYLAY_INVALID_STREAM;
|
||||||
}
|
}
|
||||||
if((frame->hd.flags & SPDYLAY_CTRL_FLAG_UNIDIRECTIONAL) == 0 ||
|
if((frame->hd.flags & SPDYLAY_CTRL_FLAG_UNIDIRECTIONAL) == 0 ||
|
||||||
frame->assoc_stream_id % 2 == 0 ||
|
|
||||||
spdylay_session_get_stream(session, frame->assoc_stream_id) == NULL) {
|
spdylay_session_get_stream(session, frame->assoc_stream_id) == NULL) {
|
||||||
/* It seems spdy/2 spec does not say which status code should be
|
/* It seems spdy/2 spec does not say which status code should be
|
||||||
returned in these cases. */
|
returned in these cases. */
|
||||||
|
@ -48,12 +48,8 @@ static int spdylay_submit_syn_stream_shared
|
|||||||
if(pri > spdylay_session_get_pri_lowest(session)) {
|
if(pri > spdylay_session_get_pri_lowest(session)) {
|
||||||
return SPDYLAY_ERR_INVALID_ARGUMENT;
|
return SPDYLAY_ERR_INVALID_ARGUMENT;
|
||||||
}
|
}
|
||||||
if(assoc_stream_id != 0) {
|
if(assoc_stream_id != 0 && session->server == 0) {
|
||||||
if(session->server == 0) {
|
|
||||||
assoc_stream_id = 0;
|
assoc_stream_id = 0;
|
||||||
} else if(spdylay_session_is_my_stream_id(session, assoc_stream_id)) {
|
|
||||||
return SPDYLAY_ERR_INVALID_ARGUMENT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(!spdylay_frame_nv_check_null(nv)) {
|
if(!spdylay_frame_nv_check_null(nv)) {
|
||||||
return SPDYLAY_ERR_INVALID_ARGUMENT;
|
return SPDYLAY_ERR_INVALID_ARGUMENT;
|
||||||
|
@ -977,11 +977,6 @@ void test_spdylay_submit_syn_stream(void)
|
|||||||
CU_ASSERT(1 == OB_CTRL(item)->syn_stream.assoc_stream_id);
|
CU_ASSERT(1 == OB_CTRL(item)->syn_stream.assoc_stream_id);
|
||||||
CU_ASSERT(3 == OB_CTRL(item)->syn_stream.pri);
|
CU_ASSERT(3 == OB_CTRL(item)->syn_stream.pri);
|
||||||
|
|
||||||
/* Invalid assoc-stream-ID */
|
|
||||||
CU_ASSERT(SPDYLAY_ERR_INVALID_ARGUMENT ==
|
|
||||||
spdylay_submit_syn_stream(session, SPDYLAY_CTRL_FLAG_FIN, 2, 3,
|
|
||||||
nv, NULL));
|
|
||||||
|
|
||||||
spdylay_session_del(session);
|
spdylay_session_del(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user