diff -Naur a/lib/nghttp2_session.c b/lib/nghttp2_session.c --- a/lib/nghttp2_session.c 2023-07-25 14:24:37.157709999 +0800 +++ b/lib/nghttp2_session.c 2023-07-25 14:22:35.604257644 +0800 @@ -2938,6 +2938,7 @@ break; } if (rv < 0) { + int rv2 = 0; int32_t opened_stream_id = 0; uint32_t error_code = NGHTTP2_INTERNAL_ERROR; @@ -2982,19 +2983,19 @@ } if (opened_stream_id) { /* careful not to override rv */ - int rv2; rv2 = nghttp2_session_close_stream(session, opened_stream_id, error_code); - if (nghttp2_is_fatal(rv2)) { - return rv2; - } } nghttp2_outbound_item_free(item, mem); nghttp2_mem_free(mem, item); active_outbound_item_reset(aob, mem); + if (nghttp2_is_fatal(rv2)) { + return rv2; + } + if (rv == NGHTTP2_ERR_HEADER_COMP) { /* If header compression error occurred, should terminiate connection. */