On Wed, Oct 19, 2011 at 9:07 PM, I?aki Baz Castillo <ibc at aliax.net> wrote: >> By default, CRLF. You can put more inventive packet if you want >> (including STUN2 packet actually). And please spare the next comment >> about sending CRLF with UDP being non-standard and such, everybody >> knows this and everybody implements this anyway. > > Oh no, I will not say that since sending CRLF is valid AFAIK ;) > IIRC 3261 says to ignore excess CRLFs, but that only applies for connection oriented transports. I don't know if this has been invalidated by other RFC though. > But it has a drawback: it just involves client-to-server traffic. > AFAIK some NAT routers could close the NAT mapping if they don't > receive server-to-client traffic for a while (I've never seen them > however). > That's true. > > But then I don't understand what you meant with: > > "That means our SIP transport must be able to multiplex STUN traffic, > which means to bring pjnath dependency into pjsip library." > > I you can send STUN requests from the same source SIP UDP port, then > why cannot you send STUN Binding Requests for NAT keealive? Currently the STUN + SIP integration is done in PJSUA-LIB level (a higher abstraction on top of PJSIP). First PJSUA-LIB does STUN resolution, and once done it hands over the socket to PJSIP. So this way PJSIP itself doesn't know anything about STUN (and avoiding dependency to pjnath) Benny