Hi!
Can someone of the experts pls help me with
a fix in record.c/record_route() please?
IMHO in append_fromtag=1 mode the direction
check is missing, if record_route() is called in loose_route block.
(Sure, I know, there is no need to call
record_route() there, but since nearly all of the UA out there don’t use
first record set on reInvites, I must do record routing on reInvites, too!)
(And I really do need the vsf parameter in
subsequent messages J)
So I would do the following:
if (append_fromtag) {
if (is_direction(_m, RR_FLOW_UPSTREAM)) { /* if not in dialog, would
return 0 anyway, e.g. no Route param ftag present */
/* use to-tag! */
Unfortunately there is no “parse_to_header”,
bec. then it would be simple….
How to access the to-tag, if any?
} else {
if (parse_from_header(_m) < 0) {
LM_ERR("From parsing failed\n");
return -2;
}
from = (struct to_body*)_m->from->parsed;
tag = &from->tag_value;
}
} else {
tag = 0;
}
--
What I do now is not nice: I set modparam("rr",
"append_fromtag", 0) and patched rr_mod.c and uac.c not to return an
Error, if append_fromtag is 0 J
[root@p01-1 rr]# more ../../../rr_mod.c.patch
---
modules/rr/rr_mod.c.ori 2010-05-25 11:03:29.000000000
+0200
+++ modules/rr/rr_mod.c 2010-05-25
12:08:34.000000000 +0200
@@ -172,9 +172,10 @@
int n;
if (!append_fromtag) {
-
LM_ERR("usage of \"is_direction\" function requires
parameter"
-
"\"append_fromtag\" enabled!!");
-
return E_CFG;
+
LM_WARN("usage of \"is_direction\" function requires
parameter"
+ "\"append_fromtag\"
enabled!!"
+
" - must be done manually to work correctly!");
+
/* return E_CFG; */
}
if (param_no==1) {
n = 0;
[root@p01-1 rr]# more ../../../uac.c.patch
---
modules/uac/uac.c.orig 2010-05-25
10:57:59.000000000 +0200
+++ modules/uac/uac.c
2010-05-25 11:00:40.000000000 +0200
@@ -206,9 +206,13 @@
if (from_restore_mode==FROM_AUTO_RESTORE) {
/* we need the append_fromtag on in RR */
if (!uac_rrb.append_fromtag) {
-
LM_ERR("'append_fromtag' RR param is not enabled!"
-
" - required by AUTO restore mode\n");
-
goto error;
+
LM_WARN("'append_fromtag' RR param is not enabled!"
+
" - required by AUTO restore mode"
+
" - make sure it's done manually!\n");
+
/* normally ERR, but just remind script writer, that she has to do ;ftag=$ft/$tt
manually
+
normally this would be OK, but record_route() add $ft in upsteam request
+
should be fixed in rr module!
+
goto error; */
}
/*
get all requests doing loose route */
if (uac_rrb.register_rrcb( rr_checker, 0)!=0) {
--
Many thanks!
Walter
---------------------------------------
NeoTel Telefonservice GmbH & Co KG
Esterhazygasse 18a/15
A-1060 Wien
T: +43 1 4094181 - 81
M: +43 660 88866 - 81
F: +43 1 4094181 - 981