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
Show replies by date