Module: sip-router
Branch: master
Commit: 7e2bf0f1c1a7a84e2b4fb33f2175d7bc0d057c10
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7e2bf0f…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: Tue Jun 9 14:47:15 2009 +0300
xcap_client: init db con per process
- introduced child_init function to init db connection per process
- db connection closed in destroy function
- reported and credits to Pascal Maugeri and Inaki Baz Castillo
---
modules_k/presence/subscribe.c | 2 +-
modules_k/xcap_client/xcap_client.c | 20 ++++++++++++++++++--
2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/modules_k/presence/subscribe.c b/modules_k/presence/subscribe.c
index f05300a..3067919 100644
--- a/modules_k/presence/subscribe.c
+++ b/modules_k/presence/subscribe.c
@@ -1610,7 +1610,7 @@ void update_db_subs(db1_con_t *db,db_func_t dbf, shtable_t
hash_table,
lock_release(&hash_table[i].lock);
}
- update_vals[0].val.int_val= (int)time(NULL)- 10;
+ update_vals[0].val.int_val= (int)time(NULL) - expires_offset;
update_ops[0]= OP_LT;
if(dbf.delete(db, update_cols, update_ops, update_vals, 1) < 0)
{
diff --git a/modules_k/xcap_client/xcap_client.c b/modules_k/xcap_client/xcap_client.c
index 8fde618..55084d8 100644
--- a/modules_k/xcap_client/xcap_client.c
+++ b/modules_k/xcap_client/xcap_client.c
@@ -53,6 +53,7 @@ MODULE_VERSION
#define XCAP_TABLE_VERSION 3
static int mod_init(void);
+static int child_init(int rank);
void destroy(void);
struct mi_root* refreshXcapDoc(struct mi_root* cmd, void* param);
int get_auid_flag(str auid);
@@ -112,7 +113,7 @@ struct module_exports exports= {
mod_init, /* module initialization function */
0, /* response handling function */
(destroy_function) destroy, /* destroy function */
- 0 /* per-child init function */
+ child_init /* per-child init function */
};
/**
@@ -149,10 +150,13 @@ static int mod_init(void)
return -1;
}
- if(db_check_table_version(&xcap_dbf, xcap_db, &xcap_db_table,
XCAP_TABLE_VERSION) < 0) {
+ if(db_check_table_version(&xcap_dbf, xcap_db, &xcap_db_table,
+ XCAP_TABLE_VERSION) < 0) {
LM_ERR("error during table version check.\n");
return -1;
}
+ xcap_dbf.close(xcap_db);
+ xcap_db = NULL;
curl_global_init(CURL_GLOBAL_ALL);
@@ -163,9 +167,21 @@ static int mod_init(void)
return 0;
}
+static int child_init(int rank)
+{
+ if((xcap_db = xcap_dbf.init(&xcap_db_url))==NULL)
+ {
+ LM_ERR("cannot connect to db\n");
+ return -1;
+ }
+ return -1;
+}
+
void destroy(void)
{
curl_global_cleanup();
+ if(xcap_db != NULL)
+ xcap_dbf.close(xcap_db);
}
void query_xcap_update(unsigned int ticks, void* param)