Commit b6067980 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

Filter supported flags in received frame

parent 547d6d1f
......@@ -3606,6 +3606,10 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session,
switch(iframe->frame.hd.type) {
case NGHTTP2_DATA: {
DEBUGF(fprintf(stderr, "DATA\n"));
iframe->frame.hd.flags &= (NGHTTP2_FLAG_END_STREAM |
NGHTTP2_FLAG_END_SEGMENT |
NGHTTP2_FLAG_PAD_LOW |
NGHTTP2_FLAG_PAD_HIGH);
/* Check stream is open. If it is not open or closing,
ignore payload. */
busy = 1;
......@@ -3637,6 +3641,12 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session,
break;
}
case NGHTTP2_HEADERS:
iframe->frame.hd.flags &= (NGHTTP2_FLAG_END_STREAM |
NGHTTP2_FLAG_END_SEGMENT |
NGHTTP2_FLAG_END_HEADERS |
NGHTTP2_FLAG_PRIORITY |
NGHTTP2_FLAG_PAD_LOW |
NGHTTP2_FLAG_PAD_HIGH);
DEBUGF(fprintf(stderr, "HEADERS\n"));
rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
if(rv < 0) {
......@@ -3690,6 +3700,7 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session,
break;
}
#endif /* DEBUGBUILD */
iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
if(iframe->payloadleft != 4) {
busy = 1;
iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
......@@ -3700,6 +3711,7 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session,
break;
case NGHTTP2_SETTINGS:
DEBUGF(fprintf(stderr, "SETTINGS\n"));
iframe->frame.hd.flags &= NGHTTP2_FLAG_ACK;
if((iframe->frame.hd.length % NGHTTP2_FRAME_SETTINGS_ENTRY_LENGTH) ||
((iframe->frame.hd.flags & NGHTTP2_FLAG_ACK) &&
iframe->payloadleft > 0)) {
......@@ -3718,6 +3730,9 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session,
break;
case NGHTTP2_PUSH_PROMISE:
DEBUGF(fprintf(stderr, "PUSH_PROMISE\n"));
iframe->frame.hd.flags &= (NGHTTP2_FLAG_END_HEADERS |
NGHTTP2_FLAG_PAD_LOW |
NGHTTP2_FLAG_PAD_HIGH);
rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
if(rv < 0) {
busy = 1;
......@@ -3743,6 +3758,7 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session,
break;
case NGHTTP2_PING:
DEBUGF(fprintf(stderr, "PING\n"));
iframe->frame.hd.flags &= NGHTTP2_FLAG_ACK;
if(iframe->payloadleft != 8) {
busy = 1;
iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
......@@ -3753,6 +3769,7 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session,
break;
case NGHTTP2_GOAWAY:
DEBUGF(fprintf(stderr, "GOAWAY\n"));
iframe->frame.hd.flags = NGHTTP2_FLAG_NONE;
if(iframe->payloadleft < 8) {
busy = 1;
iframe->state = NGHTTP2_IB_FRAME_SIZE_ERROR;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment