chan_sip: Resolve externhost not to IPv6; instead go for IPv4.
authorAlexander Traud <pabstraud@compuserve.com>
Fri, 23 Sep 2016 14:54:28 +0000 (16:54 +0200)
committerAlexander Traud <pabstraud@compuserve.com>
Fri, 23 Sep 2016 14:54:28 +0000 (16:54 +0200)
commit5dd99465d3436a36ad68fe115d8bd1c3705a4073
treec0ce41ff49ab15aec3a4d099c5ea77ccd27d9ec0
parent8d5219e6b8aca51f8ae334c2f7021318b063ad12
chan_sip: Resolve externhost not to IPv6; instead go for IPv4.

For the channel driver chan_sip, you specify externhost=example.com in sip.conf
when your Asterisk is behind a NAT and your IP address is assigned dynamically.
Or stated differently: You do not have a static IP address to use "externaddr"
directly. This NAT support is quite handy but just about IPv4. Previously,
Asterisk resolved "externhost" to any IP version. When the first DNS answer
resolved to an IPv6, Asterisk sent an IPv6 in SIP/SDP for origin (o=) and
connection (c=). This happened in outgoing SIP-REGISTER and while answering
SIP-INVITE. If the remote peer is IPv4-only, it might not handle o=/c= with an
IPv6. This change makes sure, no IPv6 is resolved anymore for "externhost".

ASTERISK-18232 #close
Reported by: Jacek Kowalski
Tested by: Alexander Traud
patches:
 changes.patch submitted by Alessandro Crespi

Change-Id: If68eedbeff65bd1c1d8a9ed921c02ba464b32dac
channels/chan_sip.c