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