sergey-safarov created an issue (kamailio/kamailio#4457)
### Description
For now, `htable` exporting `table_spec` and `init_tables`.
[Link](https://github.com/kamailio/kamailio/blob/18beef305002e6b2a4a6504273a33db3aa9a3cf4/src/modules/htable/api.c#L169-L170)
When spec contains `dbmode=1`, then data is not loaded from the database, and
`htable` cache data is not available after Kamailio restart.
It would be fine to expose `ht_db_load_tables` via `htable` API and other
Kamailio modules can get cache after Kamailio restart.
### Expected behavior
htables defined via API with param dbmode=1 loaded after Kamailio restart.
#### Actual observed behavior
htables cache is not loaded after Kamailio restart if the table is created via
API.
### Possible Solutions
Probably it can be done using this change
```diff
>From 72e1aea56efa16ecd50806baa94a5cc0f62d37d6 Mon Sep 17 00:00:00 2001
From: Nikolay Ivanuschak <[email protected]>
Date: Wed, 29 Oct 2025 22:57:49 +0300
Subject: [PATCH] htable: added db API functions
---
src/modules/htable/api.c | 25 +++++++++++++++++++++++++
src/modules/htable/api.h | 9 +++++++++
2 files changed, 34 insertions(+)
diff --git a/src/modules/htable/api.c b/src/modules/htable/api.c
index 94095d3d5d..02b299d8c4 100644
--- a/src/modules/htable/api.c
+++ b/src/modules/htable/api.c
@@ -26,6 +26,7 @@
#include "../../core/dprint.h"
#include "ht_api.h"
+#include "ht_db.h"
#include "api.h"
#include "ht_dmq.h"
@@ -157,6 +158,26 @@ int ht_api_init_tables(void)
return ht_init_tables();
}
+int ht_api_db_open_con(void)
+{
+ return ht_db_open_con();
+}
+
+int ht_api_db_close_con(void)
+{
+ return ht_db_close_con();
+}
+
+int ht_api_db_load_tables(void)
+{
+ return ht_db_load_tables();
+}
+
+int ht_api_db_sync_tables(void)
+{
+ return ht_db_sync_tables();
+}
+
/**
*
*/
@@ -175,5 +196,9 @@ int bind_htable(htable_api_t *api)
api->get_expire = ht_api_get_cell_expire;
api->rm_re = ht_api_rm_cell_re;
api->count_re = ht_api_count_cells_re;
+ api->db_open_con = ht_api_db_open_con;
+ api->db_close_con = ht_api_db_close_con;
+ api->db_load_tables = ht_api_db_load_tables;
+ api->db_sync_tables = ht_api_db_sync_tables;
return 0;
}
diff --git a/src/modules/htable/api.h b/src/modules/htable/api.h
index 2e84f2e0da..1f0a547434 100644
--- a/src/modules/htable/api.h
+++ b/src/modules/htable/api.h
@@ -38,6 +38,11 @@ typedef int (*ht_api_set_cell_expire_f)(
typedef int (*ht_api_get_cell_expire_f)(
str *hname, str *name, unsigned int *val);
+typedef int (*ht_api_db_open_con_f)(void);
+typedef int (*ht_api_db_close_con_f)(void);
+typedef int (*ht_api_db_load_tables_f)(void);
+typedef int (*ht_api_db_sync_tables_f)(void);
+
typedef int (*ht_api_rm_cell_re_f)(str *hname, str *sre, int mode);
typedef int (*ht_api_count_cells_re_f)(str *hname, str *sre, int mode);
@@ -52,6 +57,10 @@ typedef struct htable_api
ht_api_get_cell_expire_f get_expire;
ht_api_rm_cell_re_f rm_re;
ht_api_count_cells_re_f count_re;
+ ht_api_db_open_con_f db_open_con;
+ ht_api_db_close_con_f db_close_con;
+ ht_api_db_load_tables_f db_load_tables;
+ ht_api_db_sync_tables_f db_sync_tables;
} htable_api_t;
typedef int (*bind_htable_f)(htable_api_t *api);
--
2.51.0
```
Here exposed `db_open_con`, `db_close_con`, also because required to make sure
database connections are present before reading the database.
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4457
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/[email protected]>_______________________________________________
Kamailio - Development Mailing List -- [email protected]
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the
sender!