Module: kamailio Branch: master Commit: 19e608f803b7198543091bf41c468153567741d3 URL: https://github.com/kamailio/kamailio/commit/19e608f803b7198543091bf41c468153...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2015-09-18T22:59:44+02:00
tsilot: t_store(...) accepts uri as parameter
- uri can be explicitely given as parameter instead of taking it from r-uri - can help avoiding: backup r-uri, set it to another uri and then restore r-uri from backup
---
Modified: modules/tsilo/ts_store.c Modified: modules/tsilo/ts_store.h Modified: modules/tsilo/tsilo.c
---
Diff: https://github.com/kamailio/kamailio/commit/19e608f803b7198543091bf41c468153... Patch: https://github.com/kamailio/kamailio/commit/19e608f803b7198543091bf41c468153...
---
diff --git a/modules/tsilo/ts_store.c b/modules/tsilo/ts_store.c index a05a4ef..2cec2ef 100644 --- a/modules/tsilo/ts_store.c +++ b/modules/tsilo/ts_store.c @@ -39,7 +39,7 @@
extern int use_domain;
-int ts_store(struct sip_msg* msg) { +int ts_store(struct sip_msg* msg, str *puri) { struct cell *t; str aor; struct sip_uri ruri; @@ -48,12 +48,16 @@ int ts_store(struct sip_msg* msg) { ts_urecord_t* r; int res;
- if (msg->new_uri.s!=NULL) { - /* incoming r-uri was chaged by cfg or other component */ - suri = msg->new_uri; + if(puri && puri->s && puri->len>0) { + suri = *puri; } else { - /* no changes to incoming r-uri */ - suri = msg->first_line.u.request.uri; + if (msg->new_uri.s!=NULL) { + /* incoming r-uri was chaged by cfg or other component */ + suri = msg->new_uri; + } else { + /* no changes to incoming r-uri */ + suri = msg->first_line.u.request.uri; + } }
if (use_domain) { diff --git a/modules/tsilo/ts_store.h b/modules/tsilo/ts_store.h index 3a3a8a9..824ccc9 100644 --- a/modules/tsilo/ts_store.h +++ b/modules/tsilo/ts_store.h @@ -22,6 +22,6 @@ #ifndef _TS_STORE_H #define _TS_STORE_H
-int ts_store(struct sip_msg* msg); +int ts_store(struct sip_msg* msg, str *puri);
#endif diff --git a/modules/tsilo/tsilo.c b/modules/tsilo/tsilo.c index 51c1e81..f9bcfa9 100644 --- a/modules/tsilo/tsilo.c +++ b/modules/tsilo/tsilo.c @@ -65,7 +65,8 @@ static int fixup_ts_append_to(void** param, int param_no); static int w_ts_append(struct sip_msg* _msg, char *_table, char *_ruri); static int fixup_ts_append(void** param, int param_no);
-static int w_ts_store(struct sip_msg* msg); +static int w_ts_store(struct sip_msg* msg, char *p1, char *p2); +static int w_ts_store1(struct sip_msg* msg, char *_ruri, char *p2);
extern stat_var *stored_ruris; extern stat_var *stored_transactions; @@ -80,6 +81,8 @@ static cmd_export_t cmds[]={ fixup_ts_append, 0, REQUEST_ROUTE | FAILURE_ROUTE }, {"ts_store", (cmd_function)w_ts_store, 0, 0 , 0, REQUEST_ROUTE | FAILURE_ROUTE }, + {"ts_store", (cmd_function)w_ts_store1, 1, + fixup_spve_null , 0, REQUEST_ROUTE | FAILURE_ROUTE }, {0,0,0,0,0,0} };
@@ -279,7 +282,22 @@ static int w_ts_append_to(struct sip_msg* msg, char *idx, char *lbl, char *table /** * */ -static int w_ts_store(struct sip_msg* msg) +static int w_ts_store(struct sip_msg* msg, char *p1, char *p2) { - return ts_store(msg); + return ts_store(msg, 0); +} + + +/** + * + */ +static int w_ts_store1(struct sip_msg* msg, char *_ruri, char *p2) +{ + str suri; + + if(fixup_get_svalue(msg, (gparam_t*)_ruri, &suri)!=0) { + LM_ERR("failed to conert r-uri parameter\n"); + return -1; + } + return ts_store(msg, &suri); }