aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni <matzeton@googlemail.com>2021-01-04 12:47:05 +0100
committerGitHub <noreply@github.com>2021-01-04 12:47:05 +0100
commit53ee6db795ae237d1a32818045c754dc912ef2e5 (patch)
treefc1741ac0eeb50d0e67c97292d2adc8803945b6a
parent3bb12fde6357136c8309e05bd08134f9440bb8ad (diff)
Added a new API function `ndpi_free_flow_data' which free's all members of ndpi_flow_struct but not the struct itself. (#1101)
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rw-r--r--src/include/ndpi_api.h.in12
-rw-r--r--src/lib/ndpi_main.c7
2 files changed, 16 insertions, 3 deletions
diff --git a/src/include/ndpi_api.h.in b/src/include/ndpi_api.h.in
index d6145e99a..f5b5f15db 100644
--- a/src/include/ndpi_api.h.in
+++ b/src/include/ndpi_api.h.in
@@ -201,9 +201,17 @@ extern "C" {
void ndpi_finalize_initalization(struct ndpi_detection_module_struct *ndpi_str);
/**
- * Frees the memory allocated in the specified flow
+ * Frees the dynamic memory allocated members in the specified flow
*
- * @par flow = the flow to deallocate
+ * @par flow = the flow struct which dynamic allocated members should be deallocated
+ *
+ */
+ void ndpi_free_flow_data(struct ndpi_flow_struct *flow);
+
+ /**
+ * Frees the dynamic memory allocated members in the specified flow and the flow struct itself
+ *
+ * @par flow = the flow struct and its dynamic allocated members that should be deallocated
*
*/
void ndpi_free_flow(struct ndpi_flow_struct *flow);
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 9fc40eb1c..6765c26d6 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -6310,7 +6310,7 @@ int ndpi_match_bigram(struct ndpi_detection_module_struct *ndpi_str,
/* ****************************************************** */
-void ndpi_free_flow(struct ndpi_flow_struct *flow) {
+void ndpi_free_flow_data(struct ndpi_flow_struct *flow) {
if(flow) {
u_int is_quic = flow_is_proto(flow, NDPI_PROTOCOL_QUIC);
@@ -6355,7 +6355,12 @@ void ndpi_free_flow(struct ndpi_flow_struct *flow) {
if(flow->l4.tcp.tls.message.buffer)
ndpi_free(flow->l4.tcp.tls.message.buffer);
}
+ }
+}
+void ndpi_free_flow(struct ndpi_flow_struct *flow) {
+ if (flow) {
+ ndpi_free_flow_data(flow);
ndpi_free(flow);
}
}