From dde284b25ade350c9606dc79bc75abd8be9fef7b Mon Sep 17 00:00:00 2001 From: SashaXser <24498484+SashaXser@users.noreply.github.com> Date: Fri, 8 Sep 2023 19:12:31 +0400 Subject: [PATCH] Update ttltrack.c --- src/ttltrack.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ttltrack.c b/src/ttltrack.c index 69201e3..cf3276e 100644 --- a/src/ttltrack.c +++ b/src/ttltrack.c @@ -38,8 +38,6 @@ typedef struct tcp_connrecord { static time_t last_cleanup = 0; static tcp_connrecord_t *conntrack = NULL; -static tcp_connrecord_t connrecord_pool[CONNRECORD_POOL_SIZE]; -static int connrecord_pool_index = 0; inline static void fill_key_data(char *key, const uint8_t is_ipv6, const uint32_t srcip[4], const uint32_t dstip[4], const uint16_t srcport, const uint16_t dstport) @@ -147,7 +145,7 @@ static int add_tcp_conntrack(const uint32_t srcip[4], const uint32_t dstip[4], if (!(srcip && srcport && dstip && dstport)) return FALSE; - tcp_connrecord_t *tmp_connrecord = &connrecord_pool[connrecord_pool_index++]; + tcp_connrecord_t *tmp_connrecord = malloc(sizeof(tcp_connrecord_t)); construct_key(srcip, dstip, srcport, dstport, tmp_connrecord->key, is_ipv6); if (!check_get_tcp_conntrack_key(tmp_connrecord->key, NULL)) { @@ -158,6 +156,7 @@ static int add_tcp_conntrack(const uint32_t srcip[4], const uint32_t dstip[4], return TRUE; } debug("Not added TCP conntrack %u:%hu - %u:%hu\n", srcip[0], ntohs(srcport), dstip[0], ntohs(dstport)); + free(tmp_connrecord); return FALSE; } @@ -174,7 +173,8 @@ static void tcp_cleanup() { HASH_ITER(hh, conntrack, tmp_connrecord, tmp_connrecord2) { if (difftime(last_cleanup, tmp_connrecord->time) >= TCP_CLEANUP_INTERVAL_SEC) { - HASH_DELETE(hh, conntrack, tmp_connrecord); + HASH_DEL(conntrack, tmp_connrecord); + free(tmp_connrecord); } } } @@ -209,7 +209,8 @@ int tcp_handle_outgoing(uint32_t srcip[4], uint32_t dstip[4], if (check_get_tcp_conntrack_key(key, &tmp_connrecord) && tmp_connrecord) { /* Connection exists in conntrack, moving on */ deconstruct_key(key, tmp_connrecord, conn_info); - HASH_DELETE(hh, conntrack, tmp_connrecord); + HASH_DEL(conntrack, tmp_connrecord); + free(tmp_connrecord); debug("____tcp_handle_outgoing TRUE: srcport = %hu\n", ntohs(srcport)); return TRUE; }