Another error I met recently. It occurred when both padding and
continuation are enabled.
A normal HEADERS frame was divided as follows:
HEADERS ===> HEADERS(PADDED_FLAG) + CONTINUATION + CONTINUATION
After sending these frames, I got an error. In the debug log file, I
“client sent inappropriate frame while CONTINUATION was expected while
processing HTTP/2 connection”. Then I read the source code (v 1.9.9),
located the function “ngx_http_v2_handle_continuation” (ngx_http_v2.c,
1749). It seems NGINX does not skip the “padding part”, but tries to
“type” field in the next CONTINUATION frame directly.
However, when testing padding and continuation frame separately, NGINX
handle both cases well. I don’t know whether I did something wrong or
is a bug in NGINX. I also sent the same frames to other servers (nghttp,
h2o, GWS), and got the responses successfully.