At least check stream ID is valid when PUSH_PROMISE is received in goaway mode

This commit is contained in:
Tatsuhiro Tsujikawa 2015-12-10 23:54:54 +09:00
parent 0c70ff5658
commit f14ac74316
1 changed files with 6 additions and 5 deletions

View File

@ -4121,17 +4121,18 @@ int nghttp2_session_on_push_promise_received(nghttp2_session *session,
return session_inflate_handle_invalid_connection( return session_inflate_handle_invalid_connection(
session, frame, NGHTTP2_ERR_PROTO, "PUSH_PROMISE: push disabled"); session, frame, NGHTTP2_ERR_PROTO, "PUSH_PROMISE: push disabled");
} }
if (session->goaway_flags) {
/* We just dicard PUSH_PROMISE after GOAWAY is sent or
received. */
return NGHTTP2_ERR_IGN_HEADER_BLOCK;
}
if (!nghttp2_session_is_my_stream_id(session, frame->hd.stream_id)) { if (!nghttp2_session_is_my_stream_id(session, frame->hd.stream_id)) {
return session_inflate_handle_invalid_connection( return session_inflate_handle_invalid_connection(
session, frame, NGHTTP2_ERR_PROTO, "PUSH_PROMISE: invalid stream_id"); session, frame, NGHTTP2_ERR_PROTO, "PUSH_PROMISE: invalid stream_id");
} }
if (session->goaway_flags) {
/* We just dicard PUSH_PROMISE after GOAWAY is sent or
received. */
return NGHTTP2_ERR_IGN_HEADER_BLOCK;
}
if (!session_is_new_peer_stream_id(session, if (!session_is_new_peer_stream_id(session,
frame->push_promise.promised_stream_id)) { frame->push_promise.promised_stream_id)) {
/* The spec says if an endpoint receives a PUSH_PROMISE with /* The spec says if an endpoint receives a PUSH_PROMISE with