Hi,
One of my (Open)SER machines (P1) is acting as registrar and so I have alias=mydomain.tld in the script; it is used in the (uri == myself) check to handle REGISTER requests.
I have a setup like this:
UA1 (user1@mydomain.tld) - P2 - P1 - P3 - P1 - P2 - UA2 (user2@mydomain.tld) (all proxies are record-routing except P3)
For initial requests (INVITE from UA1 to UA2) all is fine. But I'm having problems with the loose_route() function, because when an in-dialog (subsequent) request comes into P1 (from UA1, P2) with a Route header containing (<P1>, <P1>, <P2>), the after_strict() function is called, when I would expect the after_loose() function to be called since P1 is a loose router. Within loose_route(), is_preloaded() returns 0, which is correct. But then is_myself returns true because of the alias...
Is this a bug in loose_route() which doesn't account for this kind of setup (Routeing in-dialog requests through the registrar)? Maybe this could be avoided, if there was a parameter forcing loose_route to treat previous hop as a loose router... Or am I just doing something wrong?
Thanks in advance, JF
The decision whether after_loose or after_strict will be called is based on the Request-URI of the request. If the Request-URI hostname part contains the IP or hostname of the proxy which received the request then it assumes that the previous hop was strict router. If the previous hop was loose router then the Request-URI should contain the Contact header of UA2 and that should not be matched by (uri==myself).
Jan.
On 30-01-2006 19:34, JF wrote:
Hi,
One of my (Open)SER machines (P1) is acting as registrar and so I have alias=mydomain.tld in the script; it is used in the (uri == myself) check to handle REGISTER requests.
I have a setup like this:
UA1 (user1@mydomain.tld) - P2 - P1 - P3 - P1 - P2 - UA2 (user2@mydomain.tld) (all proxies are record-routing except P3)
For initial requests (INVITE from UA1 to UA2) all is fine. But I'm having problems with the loose_route() function, because when an in-dialog (subsequent) request comes into P1 (from UA1, P2) with a Route header containing (<P1>, <P1>, <P2>), the after_strict() function is called, when I would expect the after_loose() function to be called since P1 is a loose router. Within loose_route(), is_preloaded() returns 0, which is correct. But then is_myself returns true because of the alias...
Is this a bug in loose_route() which doesn't account for this kind of setup (Routeing in-dialog requests through the registrar)? Maybe this could be avoided, if there was a parameter forcing loose_route to treat previous hop as a loose router... Or am I just doing something wrong?
Thanks in advance, JF
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Thank you, Jan. So it seems like a user agent problem. UA1 is inserting in the in-dialog request the initial request's Request-URI and not the remote target for the dialog (UA2's contact) as per RFC3261.
JF
On 1/30/06, Jan Janak jan@iptel.org wrote:
The decision whether after_loose or after_strict will be called is based on the Request-URI of the request. If the Request-URI hostname part contains the IP or hostname of the proxy which received the request then it assumes that the previous hop was strict router. If the previous hop was loose router then the Request-URI should contain the Contact header of UA2 and that should not be matched by (uri==myself).
Jan.
On 30-01-2006 19:34, JF wrote:
Hi,
One of my (Open)SER machines (P1) is acting as registrar and so I have alias=mydomain.tld in the script; it is used in the (uri == myself) check to handle REGISTER requests.
I have a setup like this:
UA1 (user1@mydomain.tld) - P2 - P1 - P3 - P1 - P2 - UA2 (user2@mydomain.tld) (all proxies are record-routing except P3)
For initial requests (INVITE from UA1 to UA2) all is fine. But I'm having problems with the loose_route() function, because when an in-dialog (subsequent) request comes into P1 (from UA1, P2) with a Route header containing (<P1>, <P1>, <P2>), the after_strict() function is called, when I would expect the after_loose() function to be called since P1 is a loose router. Within loose_route(), is_preloaded() returns 0, which is correct. But then is_myself returns true because of the alias...
Is this a bug in loose_route() which doesn't account for this kind of setup (Routeing in-dialog requests through the registrar)? Maybe this could be avoided, if there was a parameter forcing loose_route to treat previous hop as a loose router... Or am I just doing something wrong?
Thanks in advance, JF
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers