http2: Ignore if we have stream ID not in hash in on_stream_close

We could get stream ID not in the hash in on_stream_close.  For
example, if we decided to reject stream (e.g., PUSH_PROMISE), then we
don't create stream and store it in hash with its stream ID.
This commit is contained in:
Tatsuhiro Tsujikawa 2015-05-16 18:13:10 +09:00 committed by Daniel Stenberg
parent 4ac6cc3ebd
commit 7ff7e45405
1 changed files with 6 additions and 4 deletions

View File

@ -431,11 +431,13 @@ static int on_stream_close(nghttp2_session *session, int32_t stream_id,
data_s = Curl_hash_pick(&conn->proto.httpc.streamsh, &stream_id,
sizeof(stream_id));
if(!data_s) {
/* Receiving a Stream ID not in the hash should not happen, this is an
internal error more than anything else! */
failf(conn->data, "Received frame on Stream ID: %x not in stream hash!",
/* We could get stream ID not in the hash. For example, if we
decided to reject stream (e.g., PUSH_PROMISE). We call infof
as a debugging purpose for now. */
infof(conn->data,
"Received frame on Stream ID: %x not in stream hash!\n",
stream_id);
return NGHTTP2_ERR_CALLBACK_FAILURE;
return 0;
}
stream = data_s->req.protop;