[asterisk-commits] twilson: branch 1.6.0 r169078 - in /branches/1.6.0: ./ channels/chan_sip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jan 16 18:29:44 CST 2009


Author: twilson
Date: Fri Jan 16 18:29:43 2009
New Revision: 169078

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=169078
Log:
Merged revisions 169044 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
  r169044 | twilson | 2009-01-16 18:03:39 -0600 (Fri, 16 Jan 2009) | 8 lines
  
  Fix port :0 added to SIP INVITE URI when outboundproxy used
  
  (closes issue #14233)
  Reported by: chris-mac
  Patches: 
        asterisk-bug14233.diff.txt uploaded by jamesgolovich (license 176)
  Tested by: jamesgolovich, chris-mac, otherwiseguy
........

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/channels/chan_sip.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/channels/chan_sip.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.6.0/channels/chan_sip.c?view=diff&rev=169078&r1=169077&r2=169078
==============================================================================
--- branches/1.6.0/channels/chan_sip.c (original)
+++ branches/1.6.0/channels/chan_sip.c Fri Jan 16 18:29:43 2009
@@ -4163,42 +4163,47 @@
 	dialog->outboundproxy = obproxy_get(dialog, NULL);
 
 	/* If we have an outbound proxy, don't bother with DNS resolution at all */
-	if (dialog->outboundproxy)
-		return 0;
-
-	/* Let's see if we can find the host in DNS. First try DNS SRV records,
-   	   then hostname lookup */
-	/*! \todo Fix this function. When we ask SRC, we should check all transports 
-		  In the future, we should first check NAPTR to find out transport preference
-	 */
-
-	hostn = peername;
+	if (dialog->outboundproxy) {
+		/* If we have an outbound proxy, don't bother with DNS resolution at all, but set the port */
+		portno = port ? atoi(port) : (dialog->socket.type & SIP_TRANSPORT_TLS) ? STANDARD_TLS_PORT : STANDARD_SIP_PORT;
+	} else {
+
+		/* Let's see if we can find the host in DNS. First try DNS SRV records,
+		   then hostname lookup */
+		/*! \todo Fix this function. When we ask SRC, we should check all transports 
+			  In the future, we should first check NAPTR to find out transport preference
+		 */
+
+		hostn = peername;
+		if (global_srvlookup) {
+			char service[MAXHOSTNAMELEN];
+			int tportno;
+			int ret;
+
+			snprintf(service, sizeof(service), "_sip._%s.%s", get_transport(dialog->socket.type), peername);
+			ret = ast_get_srv(NULL, host, sizeof(host), &tportno, service);
+			if (ret > 0) {
+				hostn = host;
+				portno = tportno;
+			}
+		}
+		hp = ast_gethostbyname(hostn, &ahp);
+		if (!hp) {
+			ast_log(LOG_WARNING, "No such host: %s\n", peername);
+			return -1;
+		}
+		memcpy(&dialog->sa.sin_addr, hp->h_addr, sizeof(dialog->sa.sin_addr));
+		if (ast_strlen_zero(port) || sscanf(port, "%u", &portno) != 1) {
+			portno = (dialog->socket.type & SIP_TRANSPORT_TLS) ? 
+				STANDARD_TLS_PORT : STANDARD_SIP_PORT;
+		}
+	}
+
 	if (!dialog->socket.type)
 		dialog->socket.type = SIP_TRANSPORT_UDP;
 	if (!dialog->socket.port)
 		dialog->socket.port = bindaddr.sin_port;
-	if (ast_strlen_zero(port) || sscanf(port, "%u", &portno) != 1) {
-		portno = (dialog->socket.type & SIP_TRANSPORT_TLS) ? 
-			STANDARD_TLS_PORT : STANDARD_SIP_PORT;
-	}
-	if (global_srvlookup) {
-		char service[MAXHOSTNAMELEN];
-		int tportno;
-		int ret;
-
-		snprintf(service, sizeof(service), "_sip._%s.%s", get_transport(dialog->socket.type), peername);
-		ret = ast_get_srv(NULL, host, sizeof(host), &tportno, service);
-		if (ret > 0) {
-			hostn = host;
-			portno = tportno;
-		}
-	}
-	hp = ast_gethostbyname(hostn, &ahp);
-	if (!hp) {
-		ast_log(LOG_WARNING, "No such host: %s\n", peername);
-		return -1;
-	}
-	memcpy(&dialog->sa.sin_addr, hp->h_addr, sizeof(dialog->sa.sin_addr));
+
 	dialog->sa.sin_port = htons(portno);
 	dialog->recv = dialog->sa;
 	return 0;




More information about the asterisk-commits mailing list