On 08 Dec 2014, at 16:00, Charles Chance <charles.chance(a)sipcentric.com> wrote:
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).
Can't you sort that out in the routing script? I don't see why we
need to add this in the code...
If the topmost, leftmost routing header in the outbound INVITE points to me, remove it and
move on.
You have the branch route for that kind of manipulation.
What am I missing?
/O
Cheers,
Charles
On 8 December 2014 at 14:46, Olle E. Johansson <oej(a)edvina.net> wrote:
On 08 Dec 2014, at 15:42, Charles Chance <charles.chance(a)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
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(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
_______________________________________________
sr-dev mailing list
sr-dev(a)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
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(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev