summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2020-09-10 15:18:09 +0800
committerliuxueli <[email protected]>2020-09-10 15:18:09 +0800
commitea9e52730b7aa10a96781168b6c624fc1283d217 (patch)
tree96cddd0ae27e365c4babfef5fddb0475a1cd822b /src
parente8482a4b773ede2563ad1e9ba5a53dedccd436bd (diff)
传递业务层返回值到平台
Diffstat (limited to 'src')
-rw-r--r--src/SSL_Analyze.c101
1 files changed, 55 insertions, 46 deletions
diff --git a/src/SSL_Analyze.c b/src/SSL_Analyze.c
index b6677ea..d63e038 100644
--- a/src/SSL_Analyze.c
+++ b/src/SSL_Analyze.c
@@ -464,6 +464,7 @@ void ssl_releaseSslStream(struct streaminfo *a_tcp, ssl_stream** pme, int thread
char SSL_ENTRY(struct streaminfo *a_tcp, void**pme, int thread_seq, void *a_packet)
{
+ char state=APP_STATE_GIVEME;
UCHAR return_val=0;
ssl_stream *a_ssl_stream = NULL;
@@ -471,59 +472,67 @@ char SSL_ENTRY(struct streaminfo *a_tcp, void**pme, int thread_seq, void *a_pack
{
switch(ssl_doWithInsterestedRegion(a_tcp))
{
- case APP_STATE_DROPME:
- return APP_STATE_DROPME;
- default:
- break;
+ case APP_STATE_DROPME:
+ return APP_STATE_DROPME;
+ default:
+ break;
}
}
switch(a_tcp->opstate)
{
- case OP_STATE_PENDING:
- ssl_initSslStream(a_tcp, pme,thread_seq);
- case OP_STATE_DATA:
- return_val = ssl_analyseStream(a_tcp, pme ,thread_seq, a_packet);
- a_ssl_stream = (ssl_stream *)*pme;
- if(APP_STATE_DROPME==return_val || SSL_RETURN_DROPME==return_val)
- {
- ssl_releaseSslStream(a_tcp, &a_ssl_stream, thread_seq,a_packet);
- *pme = NULL;
- return APP_STATE_DROPME;
- }
+ case OP_STATE_PENDING:
+ ssl_initSslStream(a_tcp, pme,thread_seq);
+ case OP_STATE_DATA:
+ return_val = ssl_analyseStream(a_tcp, pme ,thread_seq, a_packet);
+ a_ssl_stream = (ssl_stream *)*pme;
+ if(APP_STATE_DROPME==return_val || SSL_RETURN_DROPME==return_val || a_ssl_stream->business->return_value&PROT_STATE_DROPME)
+ {
+ if(a_ssl_stream->business->return_value&PROT_STATE_DROPPKT)
+ {
+ state=APP_STATE_DROPME|APP_STATE_DROPPKT;
+ }
+ else
+ {
+ state=APP_STATE_DROPME;
+ }
+ ssl_releaseSslStream(a_tcp, &a_ssl_stream, thread_seq,a_packet);
+ *pme = NULL;
+
+ return state;
+ }
break;
-
- case OP_STATE_CLOSE:
- a_ssl_stream = (ssl_stream *)*pme;
- if(a_ssl_stream!=NULL)
- {
- a_ssl_stream->over_flag = SSL_TRUE;
- }
- if(a_ssl_stream->uiSslVersion!=UNKNOWN_VERSION)
- {
- ssl_add_proto_tag(g_ssl_prog_para.proto_tag_id, a_tcp, "SSL", strlen("SSL"));
- if(g_ssl_prog_para.stat_cycle)
+ case OP_STATE_CLOSE:
+ a_ssl_stream = (ssl_stream *)*pme;
+ if(a_ssl_stream!=NULL)
+ {
+ a_ssl_stream->over_flag = SSL_TRUE;
+ }
+ if(a_ssl_stream->uiSslVersion!=UNKNOWN_VERSION)
{
- atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_PKTS_C2S], a_tcp->ptcpdetail->serverpktnum);
- atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_PKTS_S2C], a_tcp->ptcpdetail->clientpktnum);
- atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_BITS_C2S], a_tcp->ptcpdetail->serverbytes);
- atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_BITS_S2C], a_tcp->ptcpdetail->clientbytes);
-
- FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_PKTS_C2S],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_PKTS_C2S]);
- FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_PKTS_S2C],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_PKTS_S2C]);
- FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_BITS_C2S],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_BITS_C2S]);
- FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_BITS_S2C],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_BITS_S2C]);
+ ssl_add_proto_tag(g_ssl_prog_para.proto_tag_id, a_tcp, "SSL", strlen("SSL"));
+ if(g_ssl_prog_para.stat_cycle)
+ {
+ atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_PKTS_C2S], a_tcp->ptcpdetail->serverpktnum);
+ atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_PKTS_S2C], a_tcp->ptcpdetail->clientpktnum);
+ atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_BITS_C2S], a_tcp->ptcpdetail->serverbytes);
+ atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_BITS_S2C], a_tcp->ptcpdetail->clientbytes);
+
+ FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_PKTS_C2S],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_PKTS_C2S]);
+ FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_PKTS_S2C],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_PKTS_S2C]);
+ FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_BITS_C2S],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_BITS_C2S]);
+ FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_BITS_S2C],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_BITS_S2C]);
+ }
}
- }
- return_val = ssl_analyseStream(a_tcp, pme ,thread_seq, a_packet);
- if(NULL!=a_ssl_stream)
- {
- ssl_releaseSslStream(a_tcp, &a_ssl_stream, thread_seq,a_packet);
- *pme = NULL;
- }
-
- return APP_STATE_DROPME;
- }
- return APP_STATE_GIVEME;
+ return_val = ssl_analyseStream(a_tcp, pme ,thread_seq, a_packet);
+ if(NULL!=a_ssl_stream)
+ {
+ ssl_releaseSslStream(a_tcp, &a_ssl_stream, thread_seq,a_packet);
+ *pme = NULL;
+ }
+
+ return APP_STATE_DROPME;
+ }
+ return APP_STATE_GIVEME;
}