Hi Olle, msg_apply_changes() is for getting the Path saved the first place if adding/saving on the same instance.
My patch is for later on, to avoid looping if lookup is performed on the same instance that received the register. Scenario is 2 x registrar/location servers, both sharing common DB - no separate edge proxies, but each adds itself as Path before saving (which is where msg_apply_changes() comes in). Cheers, Charles On 8 December 2014 at 14:46, Olle E. Johansson <o...@edvina.net> wrote: > > On 08 Dec 2014, at 15:42, Charles Chance <charles.cha...@sipcentric.com> > wrote: > > Hi All, > > Can anyone see a problem with doing (something like) the following, to > handle the situation like > http://lists.sip-router.org/pipermail/sr-users/2014-October/085251.html? > > Admittedly, it is probably a less common use case, but it has been raised > several times on the list so I believe it is a genuine one. > > Did you try Daniel's advice? > > "See msg_apply_changes() from textopsx to get the path header visible." > > Did that not work? > > /O > > > > diff --git a/modules/registrar/lookup.c b/modules/registrar/lookup.c > index 794d968..66730b4 100644 > --- a/modules/registrar/lookup.c > +++ b/modules/registrar/lookup.c > @@ -41,6 +41,7 @@ > #include "../../action.h" > #include "../../mod_fix.h" > #include "../../parser/parse_rr.h" > +#include "../../forward.h" > #include "../usrloc/usrloc.h" > #include "common.h" > #include "regtime.h" > @@ -121,6 +122,7 @@ int lookup_helper(struct sip_msg* _m, udomain_t* _d, > str* _uri, int _mode) > sr_xavp_t *list=NULL; > str xname = {"ruid", 4}; > sr_xval_t xval; > + sip_uri_t path_uri; > > ret = -1; > > @@ -265,6 +267,14 @@ int lookup_helper(struct sip_msg* _m, udomain_t* _d, > str* _uri, int _mode) > ret = -3; > goto done; > } > + if (parse_uri(path_dst.s, path_dst.len, &path_uri) > < 0){ > + LM_ERR("failed to parse the Path URI\n"); > + ret = -3; > + goto done; > + } > + } > + /* Only use path-uri if non-local */ > + if (path_uri.host.s && !check_self(&(path_uri.host), 0, > 0)) { > if (set_path_vector(_m, &ptr->path) < 0) { > LM_ERR("failed to set path vector\n"); > ret = -3; > > > > The above needs to be repeated in lookup_branches function of same file, > but I wanted to check others' opinions first. > > Best regards, > > Charles > > > www.sipcentric.com > > Follow us on twitter @sipcentric <http://twitter.com/sipcentric> > > Sipcentric Ltd. Company registered in England & Wales no. 7365592. Registered > office: Faraday Wharf, Innovation Birmingham Campus, Holt Street, > Birmingham Science Park, Birmingham B7 4BB. > _______________________________________________ > sr-dev mailing list > sr-dev@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev > > > > _______________________________________________ > sr-dev mailing list > sr-dev@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev > > -- *Charles Chance* Managing Director t. 0121 285 4400 m. 07932 063 891 -- www.sipcentric.com Follow us on twitter @sipcentric <http://twitter.com/sipcentric> Sipcentric Ltd. Company registered in England & Wales no. 7365592. Registered office: Faraday Wharf, Innovation Birmingham Campus, Holt Street, Birmingham Science Park, Birmingham B7 4BB.
_______________________________________________ sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev