From: Michael L. Young Date: Wed, 15 Aug 2012 01:35:57 +0000 (+0000) Subject: Fix Segfault When Registering SIP Over WebSockets X-Git-Tag: 10.9.0-rc1~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3b353c440f13c8f52198e086f2cd0b08677c483;p=thirdparty%2Fasterisk.git Fix Segfault When Registering SIP Over WebSockets The helper function, get_address_family_filter, in chan_sip for dns resolution by address family was not recognizing the websockets transport and resulting in a null pointer being sent to functions in netsock2, in an attempt to determine if we are bound to ANY address ([::]) or not. This patch fixes this issue by handling the transport types SIP_TRANSPORT_WS and SIP_TRANSPORT_WSS which results in a sock address being set properly for use in determining the address family. (closes issue ASTERISK-20221) Reported by: Sven Beisiegel Tested by: Sven Beisiegel, James Mortensen Patches: asterisk-20221-ws-family-filter.diff uploaded by Michael L. Young (license 5026) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@371250 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 3de2930ddc..2e872af0f0 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -26522,11 +26522,9 @@ int get_address_family_filter(unsigned int transport) if ((transport == SIP_TRANSPORT_UDP) || !transport) { addr = &bindaddr; - } - else if (transport == SIP_TRANSPORT_TCP) { + } else if (transport == SIP_TRANSPORT_TCP || transport == SIP_TRANSPORT_WS) { addr = &sip_tcp_desc.local_address; - } - else if (transport == SIP_TRANSPORT_TLS) { + } else if (transport == SIP_TRANSPORT_TLS || transport == SIP_TRANSPORT_WSS) { addr = &sip_tls_desc.local_address; }