From 58da463ad61d7b6b5c97934e6ed70e6c994126d2 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 29 Mar 2014 23:53:53 +0900 Subject: [PATCH] Make deflater bad state if parsing HEADERS/PUSH_PROMISE failed --- lib/nghttp2_session.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/nghttp2_session.c b/lib/nghttp2_session.c index bd169d1b..04ea9e78 100644 --- a/lib/nghttp2_session.c +++ b/lib/nghttp2_session.c @@ -4582,6 +4582,16 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session, break; } + switch(iframe->frame.hd.type) { + case NGHTTP2_HEADERS: + case NGHTTP2_PUSH_PROMISE: + /* Mark inflater bad so that we won't perform further decoding */ + session->hd_inflater.ctx.bad = 1; + break; + default: + break; + } + nghttp2_inbound_frame_reset(session); break; @@ -4714,9 +4724,6 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session, return rv; } - /* Mark inflater bad so that we won't perform further decoding */ - session->hd_inflater.ctx.bad = 1; - busy = 1; iframe->state = NGHTTP2_IB_IGN_PAYLOAD;