diff options
| author | 刘学利 <[email protected]> | 2020-09-10 16:42:30 +0800 |
|---|---|---|
| committer | 刘学利 <[email protected]> | 2020-09-10 16:42:30 +0800 |
| commit | 9de5fdf71f20fdccfe148017f9171fcc6c0983b9 (patch) | |
| tree | 96cddd0ae27e365c4babfef5fddb0475a1cd822b | |
| parent | e8482a4b773ede2563ad1e9ba5a53dedccd436bd (diff) | |
| parent | ea9e52730b7aa10a96781168b6c624fc1283d217 (diff) | |
Merge branch 'develop' into 'master'v1.0.4
传递业务层返回值到平台
See merge request MESA_Platform/ssl!4
| -rw-r--r-- | src/SSL_Analyze.c | 101 |
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; } |
