[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