summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/SSL_Analyze.c12
-rw-r--r--src/SSL_Analyze.h11
-rw-r--r--src/SSL_Proc.c1
3 files changed, 15 insertions, 9 deletions
diff --git a/src/SSL_Analyze.c b/src/SSL_Analyze.c
index 2809c00..7c6d89a 100644
--- a/src/SSL_Analyze.c
+++ b/src/SSL_Analyze.c
@@ -168,15 +168,13 @@ extern "C" char SSL_ENTRY(const struct streaminfo *a_tcp, void**pme, int thread_
ssl_add_proto_tag( a_tcp, "SSL", strlen("SSL"));
}
- ssl_context->over_flag=SSL_TRUE;
- return_val=ssl_parse_stream(a_tcp, ssl_context ,thread_seq, a_packet);
- ssl_call_plugins(a_tcp, ssl_context, NULL, 0, SSL_INTEREST_KEY_MASK, thread_seq, a_packet);
+ return_val=ssl_parse_stream(a_tcp, ssl_context ,thread_seq, a_packet);
break;
default:
break;
}
- if(SSL_FLASE==return_val || ssl_context->business.return_value&PROT_STATE_DROPME)
+ if(SSL_FLASE==return_val)
{
state=APP_STATE_DROPME;
}
@@ -188,6 +186,12 @@ extern "C" char SSL_ENTRY(const struct streaminfo *a_tcp, void**pme, int thread_
if(state&APP_STATE_DROPME || a_tcp->opstate==OP_STATE_CLOSE)
{
+ if(ssl_context->is_call_business==1)
+ {
+ ssl_context->over_flag=1;
+ ssl_call_plugins(a_tcp, ssl_context, NULL, 0, SSL_INTEREST_KEY_MASK, thread_seq, a_packet);
+ }
+
ssl_release_context(ssl_context, thread_seq);
*pme=NULL;
}
diff --git a/src/SSL_Analyze.h b/src/SSL_Analyze.h
index e5fe861..b8dabac 100644
--- a/src/SSL_Analyze.h
+++ b/src/SSL_Analyze.h
@@ -68,12 +68,13 @@ struct ssl_record_trunk
struct ssl_runtime_context
{
- unsigned char link_state;
- unsigned char over_flag;
- unsigned char is_ssl_stream;
- unsigned short version; //SSL versions, definition like TLSV1_2_VERSION in ssl.h
-
+ unsigned char link_state;
+ unsigned char over_flag;
+ unsigned char is_ssl_stream;
unsigned char first_pkt_flag;
+ unsigned char is_call_business;
+ unsigned char padding;
+ unsigned short version; //SSL versions, definition like TLSV1_2_VERSION in ssl.h
struct ssl_stream stream;
struct ssl_record_trunk record;
struct ssl_business_info business;
diff --git a/src/SSL_Proc.c b/src/SSL_Proc.c
index 1c7a621..4389c24 100644
--- a/src/SSL_Proc.c
+++ b/src/SSL_Proc.c
@@ -280,6 +280,7 @@ void ssl_call_plugins(const struct streaminfo *a_tcp, struct ssl_runtime_context
session_info.buf=buff;
session_info.buflen=buff_len;
ssl_context->business.return_value=PROT_PROCESS(&session_info, &(ssl_context->business.param), thread_seq, (struct streaminfo *)a_tcp, a_packet);
+ ssl_context->is_call_business=1;
}
}
}