Martin Hoffmann wrote:
In most cases this is what you want, because the
presence of Routes
indicates an in-dialog message which you want to treat differently (In
Here we see the root problem of the loose_route function: it's naming
and it's usage.
To identify in-dialog messages the only thing to worry about is the
to-tag. Nothing more, nothing less.
practice, most UAs just forward the message to the
outgoing proxy
without adding a Route header, which is perfectly legal as well). The
proper test for this, of course, is to check for the presence of a To
tag. But it seems to be common to all SER configs I have seen to misuse
loose_route() in this way.
Yes.
Changing the behaviour of loose_route() yet again
would mess up a lot of
configs as the earlier change messed up a lot of configs (it certainly
cost me a couple of hours debugging). Having another function would
probably be a better approach. Especially, since loose_route() is
actually the wrong name. The function does both loose and static record
routing.
I totally agree with you, e.g:
if (in_dialog()) { # probably an alias to has_totag()
process_routes(); # may have different return values
# -1: no routes found
# -2: only a single route pointing to "myself"
# 1: loose routing done
# 2: strict routing done
... NAT traversal, security checks, ....
t_relay();
exit;
}
process_routes();
# here proceed according to policy, e.g.
# -1, -2: handle now incoming request
# 1, 2: reject out-of-dialog loose/strict-route request
...
regards
klaus
Regards,
Martin
_______________________________________________
Serdev mailing list
Serdev(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serdev