mirror of https://github.com/sipwise/kamailio.git
https: //github.com/kamailio/kamailio/issues/2909 Change-Id: I65610b649d7ac1bf8c79684d94b8bba7911fe979mr10.2
parent
bfa102d281
commit
2bfad1d3dd
@ -0,0 +1,30 @@
|
||||
From: Victor Seva <linuxmaniac@torreviejawireless.org>
|
||||
Date: Thu, 4 Nov 2021 14:34:47 +0100
|
||||
Subject: permissions: don't remove old data at the end of the reload process
|
||||
|
||||
---
|
||||
src/modules/permissions/trusted.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/src/modules/permissions/trusted.c b/src/modules/permissions/trusted.c
|
||||
index 2f9c7d4..7714a32 100644
|
||||
--- a/src/modules/permissions/trusted.c
|
||||
+++ b/src/modules/permissions/trusted.c
|
||||
@@ -59,7 +59,6 @@ int reload_trusted_table(void)
|
||||
db_val_t* val;
|
||||
|
||||
struct trusted_list **new_hash_table;
|
||||
- struct trusted_list **old_hash_table;
|
||||
int i;
|
||||
int priority;
|
||||
|
||||
@@ -160,9 +159,7 @@ int reload_trusted_table(void)
|
||||
|
||||
perm_dbf.free_result(perm_db_handle, res);
|
||||
|
||||
- old_hash_table = *perm_trust_table;
|
||||
*perm_trust_table = new_hash_table;
|
||||
- empty_hash_table(old_hash_table);
|
||||
|
||||
LM_DBG("trusted table reloaded successfully.\n");
|
||||
|
@ -0,0 +1,88 @@
|
||||
From: Victor Seva <linuxmaniac@torreviejawireless.org>
|
||||
Date: Thu, 4 Nov 2021 15:11:12 +0100
|
||||
Subject: permissions: trusted_cleanup_interval
|
||||
|
||||
cleanup old data of trusted hash_table by timer function.
|
||||
---
|
||||
src/modules/permissions/permissions.c | 2 ++
|
||||
src/modules/permissions/permissions.h | 1 +
|
||||
src/modules/permissions/trusted.c | 20 ++++++++++++++++++++
|
||||
3 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/src/modules/permissions/permissions.c b/src/modules/permissions/permissions.c
|
||||
index 12ab2d8..d565520 100644
|
||||
--- a/src/modules/permissions/permissions.c
|
||||
+++ b/src/modules/permissions/permissions.c
|
||||
@@ -61,6 +61,7 @@ static char* perm_deny_suffix = ".deny";
|
||||
/* for allow_trusted and allow_address function */
|
||||
str perm_db_url = {NULL, 0}; /* Don't connect to the database by default */
|
||||
int perm_reload_delta = 5;
|
||||
+int perm_trusted_table_interval = 60;
|
||||
|
||||
/* for allow_trusted function */
|
||||
int perm_db_mode = DISABLE_CACHE; /* Database usage mode: 0=no cache, 1=cache */
|
||||
@@ -188,6 +189,7 @@ static param_export_t params[] = {
|
||||
{"max_subnets", PARAM_INT, &_perm_max_subnets },
|
||||
{"load_backends", PARAM_INT, &_perm_load_backends },
|
||||
{"reload_delta", PARAM_INT, &perm_reload_delta },
|
||||
+ {"trusted_cleanup_interval", PARAM_INT, &perm_trusted_table_interval },
|
||||
{0, 0, 0}
|
||||
};
|
||||
|
||||
diff --git a/src/modules/permissions/permissions.h b/src/modules/permissions/permissions.h
|
||||
index 2a417ff..c08666a 100644
|
||||
--- a/src/modules/permissions/permissions.h
|
||||
+++ b/src/modules/permissions/permissions.h
|
||||
@@ -60,6 +60,7 @@ extern str perm_mask_col; /* Name of mask column */
|
||||
extern str perm_port_col; /* Name of port column */
|
||||
extern int perm_peer_tag_mode; /* Matching mode */
|
||||
extern int perm_reload_delta; /* seconds between RPC reloads */
|
||||
+extern int perm_trusted_table_interval; /* interval of timer to clean old trusted data */
|
||||
|
||||
/* backends to be loaded */
|
||||
#define PERM_LOAD_ADDRESSDB (1<<0)
|
||||
diff --git a/src/modules/permissions/trusted.c b/src/modules/permissions/trusted.c
|
||||
index 7714a32..49e871a 100644
|
||||
--- a/src/modules/permissions/trusted.c
|
||||
+++ b/src/modules/permissions/trusted.c
|
||||
@@ -166,6 +166,7 @@ int reload_trusted_table(void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+void perm_ht_timer(unsigned int ticks, void *);
|
||||
|
||||
/*
|
||||
* Initialize data structures
|
||||
@@ -224,6 +225,9 @@ int init_trusted(void)
|
||||
goto error;
|
||||
}
|
||||
|
||||
+ if(register_timer(perm_ht_timer, NULL, perm_trusted_table_interval) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
perm_dbf.close(perm_db_handle);
|
||||
perm_db_handle = 0;
|
||||
}
|
||||
@@ -280,6 +284,22 @@ int init_child_trusted(int rank)
|
||||
}
|
||||
|
||||
|
||||
+void perm_ht_timer(unsigned int ticks, void *param) {
|
||||
+ if(perm_rpc_reload_time == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ if(*perm_rpc_reload_time != 0
|
||||
+ && *perm_rpc_reload_time > time(NULL) - perm_trusted_table_interval)
|
||||
+ return;
|
||||
+
|
||||
+ LM_DBG("cleaning old trusted table\n");
|
||||
+ if (*perm_trust_table == perm_trust_table_1) {
|
||||
+ empty_hash_table(perm_trust_table_2);
|
||||
+ } else {
|
||||
+ empty_hash_table(perm_trust_table_1);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Close connections and release memory
|
||||
*/
|
Loading…
Reference in new issue