@@ -3619,71 +3619,73 @@ static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame,
3619
3619
3620
3620
if (call_header_cb && (inflate_flags & NGHTTP2_HD_INFLATE_EMIT )) {
3621
3621
rv = 0 ;
3622
- if (subject_stream && session_enforce_http_messaging (session )) {
3623
- rv = nghttp2_http_on_header (session , subject_stream , frame , & nv ,
3624
- trailer );
3622
+ if (subject_stream ) {
3623
+ if (session_enforce_http_messaging (session )) {
3624
+ rv = nghttp2_http_on_header (session , subject_stream , frame , & nv ,
3625
+ trailer );
3625
3626
3626
- if (rv == NGHTTP2_ERR_IGN_HTTP_HEADER ) {
3627
- /* Don't overwrite rv here */
3628
- int rv2 ;
3627
+ if (rv == NGHTTP2_ERR_IGN_HTTP_HEADER ) {
3628
+ /* Don't overwrite rv here */
3629
+ int rv2 ;
3629
3630
3630
- rv2 = session_call_on_invalid_header (session , frame , & nv );
3631
- if (rv2 == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE ) {
3632
- rv = NGHTTP2_ERR_HTTP_HEADER ;
3633
- } else {
3634
- if (rv2 != 0 ) {
3635
- return rv2 ;
3631
+ rv2 = session_call_on_invalid_header (session , frame , & nv );
3632
+ if (rv2 == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE ) {
3633
+ rv = NGHTTP2_ERR_HTTP_HEADER ;
3634
+ } else {
3635
+ if (rv2 != 0 ) {
3636
+ return rv2 ;
3637
+ }
3638
+
3639
+ /* header is ignored */
3640
+ DEBUGF ("recv: HTTP ignored: type=%u, id=%d, header %.*s: %.*s\n" ,
3641
+ frame -> hd .type , frame -> hd .stream_id , (int )nv .name -> len ,
3642
+ nv .name -> base , (int )nv .value -> len , nv .value -> base );
3643
+
3644
+ rv2 = session_call_error_callback (
3645
+ session , NGHTTP2_ERR_HTTP_HEADER ,
3646
+ "Ignoring received invalid HTTP header field: frame type: "
3647
+ "%u, stream: %d, name: [%.*s], value: [%.*s]" ,
3648
+ frame -> hd .type , frame -> hd .stream_id , (int )nv .name -> len ,
3649
+ nv .name -> base , (int )nv .value -> len , nv .value -> base );
3650
+
3651
+ if (nghttp2_is_fatal (rv2 )) {
3652
+ return rv2 ;
3653
+ }
3636
3654
}
3655
+ }
3637
3656
3638
- /* header is ignored */
3639
- DEBUGF ("recv: HTTP ignored : type=%u, id=%d, header %.*s: %.*s\n" ,
3657
+ if ( rv == NGHTTP2_ERR_HTTP_HEADER ) {
3658
+ DEBUGF ("recv: HTTP error : type=%u, id=%d, header %.*s: %.*s\n" ,
3640
3659
frame -> hd .type , frame -> hd .stream_id , (int )nv .name -> len ,
3641
3660
nv .name -> base , (int )nv .value -> len , nv .value -> base );
3642
3661
3643
- rv2 = session_call_error_callback (
3662
+ rv = session_call_error_callback (
3644
3663
session , NGHTTP2_ERR_HTTP_HEADER ,
3645
- "Ignoring received invalid HTTP header field: frame type: "
3664
+ "Invalid HTTP header field was received : frame type: "
3646
3665
"%u, stream: %d, name: [%.*s], value: [%.*s]" ,
3647
3666
frame -> hd .type , frame -> hd .stream_id , (int )nv .name -> len ,
3648
3667
nv .name -> base , (int )nv .value -> len , nv .value -> base );
3649
3668
3650
- if (nghttp2_is_fatal (rv2 )) {
3651
- return rv2 ;
3669
+ if (nghttp2_is_fatal (rv )) {
3670
+ return rv ;
3652
3671
}
3653
- }
3654
- }
3655
-
3656
- if (rv == NGHTTP2_ERR_HTTP_HEADER ) {
3657
- DEBUGF ("recv: HTTP error: type=%u, id=%d, header %.*s: %.*s\n" ,
3658
- frame -> hd .type , frame -> hd .stream_id , (int )nv .name -> len ,
3659
- nv .name -> base , (int )nv .value -> len , nv .value -> base );
3660
3672
3661
- rv = session_call_error_callback (
3662
- session , NGHTTP2_ERR_HTTP_HEADER ,
3663
- "Invalid HTTP header field was received: frame type: "
3664
- "%u, stream: %d, name: [%.*s], value: [%.*s]" ,
3665
- frame -> hd .type , frame -> hd .stream_id , (int )nv .name -> len ,
3666
- nv .name -> base , (int )nv .value -> len , nv .value -> base );
3667
-
3668
- if (nghttp2_is_fatal (rv )) {
3669
- return rv ;
3673
+ rv = session_handle_invalid_stream2 (session ,
3674
+ subject_stream -> stream_id ,
3675
+ frame , NGHTTP2_ERR_HTTP_HEADER );
3676
+ if (nghttp2_is_fatal (rv )) {
3677
+ return rv ;
3678
+ }
3679
+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE ;
3670
3680
}
3671
-
3672
- rv =
3673
- session_handle_invalid_stream2 (session , subject_stream -> stream_id ,
3674
- frame , NGHTTP2_ERR_HTTP_HEADER );
3675
- if (nghttp2_is_fatal (rv )) {
3681
+ }
3682
+ if (rv == 0 ) {
3683
+ rv = session_call_on_header (session , frame , & nv );
3684
+ /* This handles NGHTTP2_ERR_PAUSE and
3685
+ NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE as well */
3686
+ if (rv != 0 ) {
3676
3687
return rv ;
3677
3688
}
3678
- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE ;
3679
- }
3680
- }
3681
- if (rv == 0 ) {
3682
- rv = session_call_on_header (session , frame , & nv );
3683
- /* This handles NGHTTP2_ERR_PAUSE and
3684
- NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE as well */
3685
- if (rv != 0 ) {
3686
- return rv ;
3687
3689
}
3688
3690
}
3689
3691
}
0 commit comments