Hello all,
I've been trying to figure out a cleaner way to determine the next hop for a SIP message, mainly for use within the NATMANAGE route for multi-homed kamailio instances (with three or more network interfaces on the kamailio host).
So far I have achieved this with a series of nested ifs, depending on whether the message is a request or a response and by calculating the next hop based on the various headers (R-URI, Route) and variables ($T_req($Ri), $dd, ) involved in SIP routing.
A simpler way to do it, of course, would be to use the onsend_route, but that would most likely introduce an unnecessary overhead for all routed messages.
I recently noticed there a pseudovariable called $nh(key), and I believe I can use $nh(d) to the same effect. I understand however, that this works for requests only. Also, the description of this PV in the documentation reads as follows:
Return attributes of next hop for the SIP request. Address is taken from dst_uri, if set, if not from new r-uri or original r-uri.
What is not clear to me is if this covers in-dialog requests with the Route header set as well. Does the inclusion of a route header set the dst_uri PV? And if yes, is it safe to rely on dst_uri during request processing or is it set only after completion of script processing?