Bogdan,
Thanks for clarifying, that's good to know the root cause.
But I rewrite the contact IP from INVITE for a reason. As stated
earlier, on the public internet side OpenSER talks to b2bua. So from
INVITE b2bua learns remote target URI of the client. And when it's time
to send BYE to the it, b2bua follows RFC 3261 rules regarding Request-URI:
The UAC uses the remote target and route set to build the Request-URI
and Route header field of the request.
If the route set is empty, the UAC MUST place the remote target URI
into the Request-URI. The UAC MUST NOT add a Route header field to
the request.
If the route set is not empty, and the first URI in the route set
contains the lr parameter (see Section 19.1.1), the UAC MUST place
the remote target URI into the Request-URI and MUST include a Route
header field containing the route set values in order, including all
parameters.
Since all URIs in route set from OpenSER do contain lr parameter b2bua
behaves as described in the last paragraph of the extract above.
Therefore as long as b2bua can not reach the internal network (it is
many hops away) and uses the remote target URI to send request to and
client puts private IP into Contact header (which is the right thing for
him to do) I do have to rewrite Contact header - otherwise request will
never reach the destination. Any recommendations?
Bogdan-Andrei Iancu wrote:
Hi Andrew,
My question was about the BYE request - all the routing information
(Route+RURI) are pointing to your server - I find this a bit strange as
there is no information about the end device (where openser should send
further the request).
If I understand correctly your scenario, it seams you change the contact
IP from INVITE into the openser IP - this is not good as it will make
impossible to make difference between loose route and strict route.
So your problem is that you put in INVITE's contact the server IP.
Regards,
Bogdan
--
Sincerely,
Andrew Pogrebennyk