[OpenSIPS-Devel] [nat_traversal] "nat_keepalive()" doesn't work before "t_newtran()"

Iñaki Baz Castillo ibc at aliax.net
Wed Nov 12 15:38:39 CET 2008


2008/11/12 Dan Pascu <dan at ag-projects.com>:

>> As clarification, I use rev 4943 with a UDP client (Twinkle) who
>
> If you use opensips trunk, then I think I know where the problem is.
> For a SUBSCRIBE method nat_traversal will register a hook to capture
> stateless replies and on to receive incoming TM replies to find out from
> the answer if it was a positive one and the duration until it expires.
>
> That was fine in 1.4 because handle_subscribe() did send stateless
> replies, even when you surrounded it with t_newtran/t_release to protect
> against retransmissions. In this case the stateless reply hook did
> capture the replies. The TM in hook captured replies for SUBSCRIBEs that
> were forwarded using t_relay.
>
> Now in trunk, presence changed from using sl_send_reply to using the new
> signaling module which will use t_reply instead if you called t_newtran,
> but being a proxy generated reply it won't hit the TM input callback.
>
> I'm not sure at this point if the solution is as simple as to use the
> outgoing TM callback. I do not have the time right now to analyze the
> consequences, but if you are willing to experiment, you can try to change
> the code to use the outgoing TM callback.
>
> Also to clarify things, with trunk it won't work at all no matter if you
> call nat_keepalive before or after t_newtran. As long as you use
> t_newtran it won't catch replies, except when SUBSCRIBE is forwarded with
> t_relay, but never when handled locally with handle_subscribe. With
> INVITEs OTOH, it works because INVITEs are always forwarded and INVITEs
> use the dialog module, so a different mechanism.

Ok, thanks a lot for the complete explanation. I will open a bug report for it.

Regards.

-- 
Iñaki Baz Castillo
<ibc at aliax.net>


More information about the Devel mailing list