Fix One-Way Audio With auto_* NAT Settings When SIP Calls Initiated By PBX
authorMichael L. Young <elgueromexicano@gmail.com>
Fri, 12 Apr 2013 15:06:09 +0000 (15:06 +0000)
committerMichael L. Young <elgueromexicano@gmail.com>
Fri, 12 Apr 2013 15:06:09 +0000 (15:06 +0000)
commitfcbb9f0c8dd43dde059abf2deb2ed09b2c4e4539
tree76e041071847e61358c1bf6da908bb3310ad963c
parente5b0de55352bce1d143f33a3ee3db1f8c8a2ea4b
Fix One-Way Audio With auto_* NAT Settings When SIP Calls Initiated By PBX

When we reload Asterisk or chan_sip, the flags force_rport and comedia that are
turned on and off when using the auto_force_rport and auto_comedia nat settings
go back to the default setting off.  These flags are turned on when needed or
off when not needed at the time that a peer registers, re-registers or initiates
a call.  This would apply even when only the default global setting
"nat=auto_force_rport" is being used, which in this case would only affect the
force_rport flag.

Everything is good except for the following:  The nat setting is set to
auto_force_rport and auto_comedia.  We reload Asterisk and the peer's
registration has not expired.  We load in the settings for the peer which turns
force_rport and comedia back to off.  Since the peer has not re-registered or
placed a call yet, those flags remain off.  We then initiate a call to the peer
from the PBX.  The force_rport and comedia flags stay off.  If NAT is involved,
we end up with one-way audio since we never checked to see if the peer is behind
NAT or not.

This patch does the following:

* Moves the checking of whether a peer is behind NAT into its own function

* Create a function to set the peer's NAT flags if they are using the auto_* NAT
  settings

* Adds calls in sip_request_call() to these new functions in order to setup the
  dialog according to the peer's settings

(closes issue ASTERISK-21374)
Reported by: Michael L. Young
Tested by: Michael L. Young
Patches:
    asterisk-21374-auto-nat-outgoing-fix_v2.diff Michael L. Young (license 5026)

Review: https://reviewboard.asterisk.org/r/2421/
........

Merged revisions 385473 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@385474 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_sip.c