[sr-dev] git:master:19e608f8: tsilot: t_store(...) accepts uri as parameter
Daniel-Constantin Mierla
miconda at gmail.com
Mon Sep 21 09:04:18 CEST 2015
Hi Federico,
the file was still open in my editor before closing the day, so I just
decided to do it, thinking it will provide more flexibility than the
previous patch.
Maybe the other functions from tsilo can get a parameter with uri to be
used internally, if they need such value -- I haven't looked at the code
for the other functions yet.
Cheers,
Daniel
On 19/09/15 08:03, Federico Cabiddu wrote:
> Hi Daniel,
> I woke up this morning with the idea to implement this, I swear!
> I'm just wondering now if it still makes sense to use the current uri
> by default to store the transactions.
> If we use the current uri in the "basic" scenario we have to
> explicitly call ts_store("$ou") after lookup(), while maybe it would
> be cleaner to call it with a uri when we know that the original uri is
> not the uri we want to use for storing the transaction. I don't know
> if I've been clear enough :)
> Anyway it's not a big point.
> Thanks a lot for the contribution which moreover open new use cases
> for tsilo in which I didn't think at the beginning.
>
> Cheers,
>
> Federico
>
> On Sat, Sep 19, 2015 at 12:17 AM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
> Module: kamailio
> Branch: master
> Commit: 19e608f803b7198543091bf41c468153567741d3
> URL:
> https://github.com/kamailio/kamailio/commit/19e608f803b7198543091bf41c468153567741d3
>
> Author: Daniel-Constantin Mierla <miconda at gmail.com
> <mailto:miconda at gmail.com>>
> Committer: Daniel-Constantin Mierla <miconda at gmail.com
> <mailto:miconda at 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/19e608f803b7198543091bf41c468153567741d3.diff
> Patch:
> https://github.com/kamailio/kamailio/commit/19e608f803b7198543091bf41c468153567741d3.patch
>
> ---
>
> 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);
> }
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org <mailto:sr-dev at lists.sip-router.org>
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Book: SIP Routing With Kamailio - http://www.asipto.com
Kamailio Advanced Training, Sep 28-30, 2015, in Berlin - http://asipto.com/u/kat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20150921/383796ba/attachment-0001.html>
More information about the sr-dev
mailing list