第一个数据包尝试解析SNI,支持QUIC SNI的白名单

This commit is contained in:
liuxueli
2021-09-13 16:33:56 +08:00
parent 6bf86b1824
commit 3aa13f90d7

View File

@@ -1268,14 +1268,9 @@ int quic_process(struct streaminfo *pstream, struct _quic_context* _context, int
} }
is_gquic=is_quic_protocol(pstream, _context, (char *)udp_detail->pdata, udp_detail->datalen, &used_len); is_gquic=is_quic_protocol(pstream, _context, (char *)udp_detail->pdata, udp_detail->datalen, &used_len);
if(!_context->call_business)
{
return APP_STATE_GIVEME;
}
if(is_gquic!=QUIC_VERSION_UNKNOWN) if(is_gquic!=QUIC_VERSION_UNKNOWN)
{ {
if(_context->cb_version==0) if(_context->cb_version==0 && _context->call_business)
{ {
_context->cb_version=1; _context->cb_version=1;
ret=quic_callPlugins(pstream, _context, &(_context->quic_info.quic_hdr.quic_version), sizeof(_context->quic_info.quic_hdr.quic_version), QUIC_USEING_VERSION_MASK, a_packet); ret=quic_callPlugins(pstream, _context, &(_context->quic_info.quic_hdr.quic_version), sizeof(_context->quic_info.quic_hdr.quic_version), QUIC_USEING_VERSION_MASK, a_packet);
@@ -1298,6 +1293,7 @@ int quic_process(struct streaminfo *pstream, struct _quic_context* _context, int
if(is_gquic>=GQUIC_VERSION_Q001 && is_gquic<=GQUIC_VERSION_Q046) if(is_gquic>=GQUIC_VERSION_Q001 && is_gquic<=GQUIC_VERSION_Q046)
{ {
ret=gquic_proc_unencrypt(pstream, _context, a_packet, (char *)udp_detail->pdata, udp_detail->datalen, &used_len); ret=gquic_proc_unencrypt(pstream, _context, a_packet, (char *)udp_detail->pdata, udp_detail->datalen, &used_len);
break;
} }
if( ((is_gquic>=MVFST_VERSION_00 && is_gquic<=MVFST_VERSION_0F) || if( ((is_gquic>=MVFST_VERSION_00 && is_gquic<=MVFST_VERSION_0F) ||
@@ -1320,11 +1316,14 @@ int quic_process(struct streaminfo *pstream, struct _quic_context* _context, int
break; break;
} }
if(_context->call_business)
{ {
ret=quic_callPlugins(pstream, _context, (char *)udp_detail->pdata, udp_detail->datalen, QUIC_APPLICATION_DATA_MASK, a_packet); ret=quic_callPlugins(pstream, _context, (char *)udp_detail->pdata, udp_detail->datalen, QUIC_APPLICATION_DATA_MASK, a_packet);
if((ret&APP_STATE_DROPME) || (ret&APP_STATE_DROPPKT)) if((ret&APP_STATE_DROPME) || (ret&APP_STATE_DROPPKT))
{ {
return ret; return ret;
}
} }
break; break;
@@ -1336,12 +1335,12 @@ int quic_process(struct streaminfo *pstream, struct _quic_context* _context, int
} }
} }
if(_context->quic_info.quic_hdr.is_reset) if(_context->is_quic==TRUE)
{ {
if(_context->quic_info.quic_hdr.is_reset && _context->call_business) if(_context->quic_info.quic_hdr.is_reset && _context->call_business)
{ {
return quic_callPlugins(pstream, _context, NULL, 0, QUIC_INTEREST_KEY_MASK, a_packet); return quic_callPlugins(pstream, _context, NULL, 0, QUIC_INTEREST_KEY_MASK, a_packet);
if(_context->quic_info.quic_hdr.is_version_negotiation) }
if(_context->quic_info.quic_hdr.is_version_negotiation && _context->call_business) if(_context->quic_info.quic_hdr.is_version_negotiation && _context->call_business)
{ {