alibaba / xquic

XQUIC Library released by Alibaba is a cross-platform implementation of QUIC and HTTP/3 protocol.
Apache License 2.0
1.65k stars 326 forks source link

[Bug]: xqc_parse_max_streams_frame中xqc_log_event参数错误 #203

Closed adcen0107 closed 1 year ago

adcen0107 commented 2 years ago

What happened?

1、当前代码的源文件xqc_frame_parser.c中函数xqc_parse_max_streams_frame实现如下: xqc_int_t xqc_parse_max_streams_frame(xqc_packet_in_t packet_in, uint64_t max_streams, int bidirectional, xqc_connection_t conn) { unsigned char p = packet_in->pos; const unsigned char end = packet_in->last; const unsigned char first_byte = *p++;

int vlen;

if (first_byte == 0x12) {
    *bidirectional = 1;

} else {
    *bidirectional = 0;
}

vlen = xqc_vint_read(p, end, max_streams);
if (vlen < 0) {
    return -XQC_EVINTREAD;
}
p += vlen;

packet_in->pos = p;

packet_in->pi_frame_types |= XQC_FRAME_BIT_MAX_STREAMS;

xqc_log_event(conn->log, TRA_FRAMES_PROCESSED, XQC_FRAME_MAX_STREAM_DATA, *bidirectional, *max_streams);
return XQC_OK;

} 2、函数xqc_log_event的第3个参数类型错误,这里使用的是MAX STREAM DATA,而应该传入MAX_STREAM。

Steps To Reproduce

很明显,代码应该改为: xqc_log_event(conn->log, TRA_FRAMES_PROCESSED, XQC_FRAME_MAX_STREAMS, bidirectional, max_streams);

Relevant log output

当收到max stream frame时,接收端解析日志即可以看到打印错误信息。