Hi Daniel,
Unfortunately your solution did not solve the problem. Any other idea?
Maybe a detailed description of the task can help: Assume an OpenSER registrar that is responsible for our domain. This registrar receives an Invite for a callee within our domain. Our registrar has stored a route that is associated with the callee's contact (the callee is obviously registered with our registrar).
Task: The Invite message is supposed to follow exactly this stored route to the contact/callee. How can we do this.
Our approach: the OpenSER Registrar must do the following: 1. Replace the destination/Request URI with the contact address (no other proxy on the path can do this) 2. Insert the Route header (stored in an AVP) into the received Invite. 3. Relay this Invite message (including our route header) to the callee via the route described by our route header (i.e. relay the Invite to the first entry in our route header).
It seems obvious and straight-forward how to do this - unfortunately our attempts do not show the expected result. (1) works and (2) works also, all we struggle with is (3).
t_relay() ignores the route header field that we added and forwards the Invite directly to the contact address. This nonregarding that the route header field that we pushed into the Invite in step (2) IS added correctly to the message (Ethereal traces show that OpenSER appends the route header correctly to the message. But it does not send the message according to the route header but forwards it directly to the contact)
Surprisingly: when the Registrar statlessly forwards the Invite message to itself (after step 2, i.e. with added route header) and then does t_relay, the route is taken correctly. Probably needless to mention that this forward to itself is not what we want...
So: Any idea how we can overcome this problem? Can you maybe detail on the routing logic that prevents OpenSER from sending the INVITE via the correct route?
Many thanks in advance, best regards --Joachim