[Serusers] [Serdev] loose_route behaviour, detecting single Route with myself
Nils Ohlmeier
nils at iptel.org
Fri Jul 13 11:38:05 CEST 2007
On Thursday 12 July 2007 20:31:10 Greger V. Teigre wrote:
> I vote for a new preloaded_route() in trunk. I also suggest a new alias
> for loose_route (or rename and create loose_route as backwards
> compatible name): in_dialog() returning true if and only if the message
> being processed is and in-dialog message.
The problem is that you simply can not provide the functions you want in a
stateless way.
An non-2xx ACK with a preloaded route looks exactly the same then a 2xx ACK. A
preloaded_route() function thus has no chance to distinguish them. And I will
not make the rr module depending on the tm module, just to query tm all the
time if it knows something about this transaction or not.
IMHO the only way to distinguish these two is the RURI. Because in a normal
loose route case the 2xx ACK should have non-local URI (the remote Contact)
as RURI. But the non-2xx ACK should have a local RURI.
But with this theory we are back to the original topic: is a TEL URI a local
URI or not.
And an in_dialog() function would not work as well. Because the To-tag is not
enough to decide wether the request belongs to an established dialog or not.
And the presence of one Route header also means nothing.
Is just came to my mind that a possible solution could be to add some kind of
secret information to our Record-Route headers. Then the criteria for
distinguishing a preloaded from an in-dialog routed request would be the
presence of this "secret" information in the Route header. And if a UA omits
this "secret" add-on from the Route header it would be guilty on its own that
its requests might be mis-routed.
Nils
More information about the sr-users
mailing list