From: Kinsey Moore Date: Tue, 8 Oct 2013 15:42:44 +0000 (+0000) Subject: Fix STUN crash when using IPv6 any address X-Git-Tag: 11.7.0-rc1~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69ab5a7cd129a134ec162b755d85d31e68269bd3;p=thirdparty%2Fasterisk.git Fix STUN crash when using IPv6 any address Ensure that when chan_sip binds to the IPv6 any address ([::]), IPv4 candidates are also added. (closes issue ASTERISK-21917) Reported by: Torrey Searle Patches: 0023_ipv6_stun_crash.patch uploaded by Torrey Searle (License 5334) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@400681 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 9b1716a29e..480877ac22 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -1660,7 +1660,13 @@ static void rtp_add_candidates_to_ice(struct ast_rtp_instance *instance, struct unsigned int count = PJ_ARRAY_SIZE(address), pos = 0; /* Add all the local interface IP addresses */ - pj_enum_ip_interface(ast_sockaddr_is_ipv4(addr) ? pj_AF_INET() : pj_AF_INET6(), &count, address); + if (ast_sockaddr_is_ipv4(addr)) { + pj_enum_ip_interface(pj_AF_INET(), &count, address); + } else if (ast_sockaddr_is_any(addr)) { + pj_enum_ip_interface(pj_AF_UNSPEC(), &count, address); + } else { + pj_enum_ip_interface(pj_AF_INET6(), &count, address); + } for (pos = 0; pos < count; pos++) { pj_sockaddr_set_port(&address[pos], port);