summaryrefslogtreecommitdiff
path: root/src/SSL_Message.c
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-04-27 15:18:59 +0800
committeryangwei <[email protected]>2024-04-27 19:10:40 +0800
commit446044e5d97f84d6f0d3c78b6322ba4d1f626767 (patch)
tree24071428b09cfe5ecde4d9ca20318eb322b19f28 /src/SSL_Message.c
parentedecb5505f60497597c7a827de7e8c0c65ad4f4c (diff)
✨ feat(output detain metric): output stat in local file
Diffstat (limited to 'src/SSL_Message.c')
-rw-r--r--src/SSL_Message.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/SSL_Message.c b/src/SSL_Message.c
index 3bbc393..57ef418 100644
--- a/src/SSL_Message.c
+++ b/src/SSL_Message.c
@@ -12,7 +12,7 @@
#include "SSL_Message.h"
#include "SSL_Proc.h"
#include "SSL_Certificate.h"
-
+#include "fieldstat.h"
#define SUITE_VALUELEN 2
@@ -988,20 +988,27 @@ int ssl_parse_version(const struct streaminfo *a_tcp, struct ssl_runtime_context
static void ssl_detain_frag_chello(const struct streaminfo *a_tcp)
{
- if(g_ssl_runtime_para.detain_frag_chello_enable == 0 || a_tcp->curdir != DIR_C2S)return;
+ if(g_ssl_runtime_para.detain_frag_chello_num == 0 || a_tcp->curdir != DIR_C2S || a_tcp->dir != DIR_DOUBLE)return;
struct frag_chello *pkts = (struct frag_chello *)stream_bridge_async_data_get(a_tcp, g_ssl_runtime_para.frag_chello_exdata_idx);
if (pkts == NULL)
{
pkts=(struct frag_chello *)calloc(sizeof(struct frag_chello), 1);
+ if(g_ssl_runtime_para.fs)fieldstat_value_incrby(g_ssl_runtime_para.fs,
+ g_ssl_runtime_para.fs_metric_id[FS_METRIC_DETAIN_FRAG_CHELLO_SESSION],
+ 1);
}
if(pkts->finish == 1)return;
const void *p = get_current_rawpkt_from_streaminfo(a_tcp);
struct detain_pkt *dpkt=MESA_rawpkt_detain(a_tcp, p);
- if(dpkt)
+ if(dpkt && pkts->p_sz<g_ssl_runtime_para.detain_frag_chello_num)
{
pkts->p[pkts->p_sz]=dpkt;
pkts->p_sz+=1;
+ if(pkts->p_sz==g_ssl_runtime_para.detain_frag_chello_num)pkts->finish=1;
+ if(g_ssl_runtime_para.fs)fieldstat_value_incrby(g_ssl_runtime_para.fs,
+ g_ssl_runtime_para.fs_metric_id[FS_METRIC_DETAIN_FRAG_CHELLO_NUM],
+ 1);
}
stream_bridge_async_data_put(a_tcp, g_ssl_runtime_para.frag_chello_exdata_idx, pkts);
return;
@@ -1009,9 +1016,12 @@ static void ssl_detain_frag_chello(const struct streaminfo *a_tcp)
static void ssl_detain_chello_finish(const struct streaminfo *a_tcp)
{
- if(g_ssl_runtime_para.detain_frag_chello_enable == 0)return;
+ if(g_ssl_runtime_para.detain_frag_chello_num == 0)return;
struct frag_chello *pkts = (struct frag_chello *)stream_bridge_async_data_get(a_tcp, g_ssl_runtime_para.frag_chello_exdata_idx);
if(pkts)pkts->finish=1;
+ if(g_ssl_runtime_para.fs)fieldstat_value_incrby(g_ssl_runtime_para.fs,
+ g_ssl_runtime_para.fs_metric_id[FS_METRIC_DETAIN_FRAG_CHELLO_FINISH],
+ 1);
return;
}