We are using the topology_hiding functionality of the Dialog module in OpenSIPS 
1.11. We have 2 OpenSIPs servers set up in tandem, with one acting as the 
load-balancer and the other as the proxy. Only the load-balancer has a public 
IP address, so on the proxy we use set_advertised_address(public IP) so that 
the topology_hiding() will use the public IP when re-writing the Contact and 
other headers. This also causes the public IP address to be used in the Via 
header, so we must add the rport parameter with add_local_rport(), so that the 
response will be routed back to the proxy properly.

The problem occurs because CANCEL messages are processed by the TM module. When 
the CANCEL is relayed, the Via header contains the public IP address but not 
the rport parameter. This causes the response routing to fail. The 
add_local_rport() function doesn’t seem to work because the TM module is 
responding to the received CANCEL and then generating a new CANCEL to relay so 
I have no access to the new message to add the rport. It does not show up in 
branch_route or in local_route. For RFC3261 transaction matching, the Via in 
the CANCEL must be the same as the Via in the initial INVITE, so I can’t change 
the address either.

So how can I add the rport parameter to the Via header of a CANCEL generated by 
the TM module?

Ben Newlin
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to