]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix Segfault When Registering SIP Over WebSockets
authorMichael L. Young <elgueromexicano@gmail.com>
Wed, 15 Aug 2012 01:35:57 +0000 (01:35 +0000)
committerMichael L. Young <elgueromexicano@gmail.com>
Wed, 15 Aug 2012 01:35:57 +0000 (01:35 +0000)
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

channels/chan_sip.c

index 3de2930ddc6c9c31ea3b10a942fc427fde222a06..2e872af0f0349eab31a1df03eddd19f0e306ecc1 100644 (file)
@@ -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;
        }