chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support).
authorAlexander Traud <pabstraud@compuserve.com>
Mon, 3 Jul 2017 15:59:43 +0000 (17:59 +0200)
committerAlexander Traud <pabstraud@compuserve.com>
Mon, 3 Jul 2017 15:59:43 +0000 (17:59 +0200)
When sip.conf contained tcpenable=yes and autodomain=yes, the TCP domain was
added in any case, because of a local Boolean-negation error of the return value
of ast_sockaddr_cmp. After fixing this error for TCP and TLS, the TLS domain was
still always added with tlsenable=yes, because the domains were not compared
just on the address but also on the port – and TLS is always on a different port
than UDP/TCP.

ASTERISK-27106

Change-Id: I14fe9e319e238320b094016980445ef3a5b3337c

channels/chan_sip.c

index aaeb01e..bdff0a9 100644 (file)
@@ -33278,15 +33278,15 @@ static int reload_config(enum channelreloadreason reason)
 
                /* If TCP is running on a different IP than UDP, then add it too */
                if (!ast_sockaddr_isnull(&sip_tcp_desc.local_address) &&
-                   !ast_sockaddr_cmp(&bindaddr, &sip_tcp_desc.local_address)) {
+                   ast_sockaddr_cmp_addr(&bindaddr, &sip_tcp_desc.local_address)) {
                        add_sip_domain(ast_sockaddr_stringify_addr(&sip_tcp_desc.local_address),
                                       SIP_DOMAIN_AUTO, NULL);
                }
 
                /* If TLS is running on a different IP than UDP and TCP, then add that too */
                if (!ast_sockaddr_isnull(&sip_tls_desc.local_address) &&
-                   !ast_sockaddr_cmp(&bindaddr, &sip_tls_desc.local_address) &&
-                   !ast_sockaddr_cmp(&sip_tcp_desc.local_address,
+                   ast_sockaddr_cmp_addr(&bindaddr, &sip_tls_desc.local_address) &&
+                   ast_sockaddr_cmp_addr(&sip_tcp_desc.local_address,
                                      &sip_tls_desc.local_address)) {
                        add_sip_domain(ast_sockaddr_stringify_addr(&sip_tcp_desc.local_address),
                                       SIP_DOMAIN_AUTO, NULL);