修复CLOSE状态未调用业务层的BUG

This commit is contained in:
liuxueli
2020-11-22 16:55:49 +06:00
parent 409501cd5b
commit 3ec27f95f1
3 changed files with 10 additions and 1 deletions

View File

@@ -67,6 +67,7 @@ int quic_getLinkState(struct _quic_context *_context)
if(0==_context->link_state) if(0==_context->link_state)
{ {
state=SESSION_STATE_PENDING|SESSION_STATE_DATA; state=SESSION_STATE_PENDING|SESSION_STATE_DATA;
_context->link_state=1;
} }
else else
{ {
@@ -896,9 +897,14 @@ 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 && _context->call_business) if(_context->cb_version==0)
{ {
_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);

View File

@@ -296,5 +296,7 @@ struct _gquic_ack_frame_header
unsigned int tag; unsigned int tag;
}; };
char quic_callPlugins(struct streaminfo *pstream, struct _quic_context *_context, void *buff, int buff_len, enum quic_interested_region region_mask, void *a_packet);
#endif #endif

View File

@@ -264,6 +264,7 @@ extern "C" char QUIC_ENTRY(struct streaminfo *pstream, void**pme, int thread_seq
break; break;
case OP_STATE_CLOSE: case OP_STATE_CLOSE:
ret=quic_process(pstream, _context, thread_seq, a_packet); ret=quic_process(pstream, _context, thread_seq, a_packet);
quic_callPlugins(pstream, _context, NULL, 0, QUIC_INTEREST_KEY_MASK, a_packet);
break; break;
default: default:
break; break;