From 51160d93697ca0096cb49184b2a32b07f492be30 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Tue, 27 May 2025 10:54:28 +0200 Subject: [PATCH] MT#62911 permissions: don't allow reloads in the middle of a reload Change-Id: I22f985ae11a97395386343af82c6562cefc300f2 (cherry picked from commit 998899afe15c3432532342d5cf7472c2243a88b2) (cherry picked from commit d06b2f014ac71fbfbd850908bfb1248b5d79274e) --- debian/patches/series | 2 +- ...t-allow-reloads-in-the-middle-of-ong.patch | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 debian/patches/sipwise/permissions-don-t-allow-reloads-in-the-middle-of-ong.patch diff --git a/debian/patches/series b/debian/patches/series index 345d053e2..9e272c971 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -60,7 +60,7 @@ sipwise/pua-get_record_puadb-add-pres_uri-to-the-query.patch sipwise/pua_dialoginfo-use_uuid.patch sipwise/usrloc-don-t-synchronize-on-destroy-for-DB_ONLY.patch ### active development -# +sipwise/permissions-don-t-allow-reloads-in-the-middle-of-ong.patch ### Don't just put stuff in any order ### use gbp pq import/export tooling to help maintain patches ### diff --git a/debian/patches/sipwise/permissions-don-t-allow-reloads-in-the-middle-of-ong.patch b/debian/patches/sipwise/permissions-don-t-allow-reloads-in-the-middle-of-ong.patch new file mode 100644 index 000000000..2b1427e4d --- /dev/null +++ b/debian/patches/sipwise/permissions-don-t-allow-reloads-in-the-middle-of-ong.patch @@ -0,0 +1,52 @@ +From: Victor Seva +Date: Tue, 27 May 2025 10:52:57 +0200 +Subject: permissions: don't allow reloads in the middle of ongoind reload + +--- + src/modules/permissions/rpc.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff --git a/src/modules/permissions/rpc.c b/src/modules/permissions/rpc.c +index 6519c63..ae78aa4 100644 +--- a/src/modules/permissions/rpc.c ++++ b/src/modules/permissions/rpc.c +@@ -45,7 +45,8 @@ int rpc_check_reload(rpc_t *rpc, void *ctx) + rpc->fault(ctx, 500, "ongoing reload"); + return -1; + } +- *perm_rpc_reload_time = time(NULL); ++ // we are reloading ++ *perm_rpc_reload_time = time(NULL) + 86400; + return 0; + } + +@@ -61,10 +62,13 @@ void rpc_trusted_reload(rpc_t *rpc, void *c) + + if(reload_trusted_table_cmd() != 1) { + rpc->fault(c, 500, "Reload failed."); +- return; ++ goto done; + } + + rpc->rpl_printf(c, "Reload OK"); ++done: ++ // reloading is done ++ *perm_rpc_reload_time = time(NULL); + return; + } + +@@ -101,10 +105,13 @@ void rpc_address_reload(rpc_t *rpc, void *c) + + if(reload_address_table_cmd() != 1) { + rpc->fault(c, 500, "Reload failed."); +- return; ++ goto done; + } + + rpc->rpl_printf(c, "Reload OK"); ++done: ++ // reloading is done ++ *perm_rpc_reload_time = time(NULL); + return; + } +