mirror of
https://github.com/nginx/nginx.git
synced 2025-06-22 22:10:45 +08:00
Fixed parsing of CONNECTION CLOSE2 frames.
The "frame_type" field is not passed in case of 0x1d frame.
This commit is contained in:
parent
6565860bd8
commit
1d35d0f31e
@ -624,12 +624,24 @@ ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end,
|
|||||||
case NGX_QUIC_FT_CONNECTION_CLOSE:
|
case NGX_QUIC_FT_CONNECTION_CLOSE:
|
||||||
case NGX_QUIC_FT_CONNECTION_CLOSE2:
|
case NGX_QUIC_FT_CONNECTION_CLOSE2:
|
||||||
|
|
||||||
p = ngx_quic_parse_int_multi(p, end, &f->u.close.error_code,
|
p = ngx_quic_parse_int(p, end, &f->u.close.error_code);
|
||||||
&f->u.close.frame_type,
|
|
||||||
&f->u.close.reason.len, NULL);
|
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
ngx_log_error(NGX_LOG_ERR, pkt->log, 0,
|
ngx_log_error(NGX_LOG_ERR, pkt->log, 0,
|
||||||
"failed to parse close connection frame");
|
"failed to parse close connection frame error code");
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (f->type == NGX_QUIC_FT_CONNECTION_CLOSE) {
|
||||||
|
p = ngx_quic_parse_int(p, end, &f->u.close.frame_type);
|
||||||
|
ngx_log_error(NGX_LOG_ERR, pkt->log, 0,
|
||||||
|
"failed to parse close connection frame type");
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
p = ngx_quic_parse_int(p, end, &f->u.close.reason.len);
|
||||||
|
if (p == NULL) {
|
||||||
|
ngx_log_error(NGX_LOG_ERR, pkt->log, 0,
|
||||||
|
"failed to parse close reason length");
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -657,10 +669,9 @@ ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end,
|
|||||||
&f->u.close.reason);
|
&f->u.close.reason);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, pkt->log, 0,
|
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, pkt->log, 0,
|
||||||
"CONN.CLOSE2: { (0x%xi) type=0x%xi reason '%V'}",
|
"CONN.CLOSE2: { (0x%xi) reason '%V'}",
|
||||||
f->u.close.error_code, f->u.close.frame_type,
|
f->u.close.error_code, &f->u.close.reason);
|
||||||
&f->u.close.reason);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user