[asterisk-commits] file: branch 1.6.1 r230147 - in /branches/1.6.1: ./ channels/chan_sip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Nov 13 16:01:29 CST 2009


Author: file
Date: Fri Nov 13 16:01:24 2009
New Revision: 230147

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=230147
Log:
Merged revisions 230145 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r230145 | file | 2009-11-13 16:00:44 -0600 (Fri, 13 Nov 2009) | 15 lines
  
  Merged revisions 230144 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r230144 | file | 2009-11-13 16:00:19 -0600 (Fri, 13 Nov 2009) | 8 lines
    
    Respect the maddr parameter in the Via header.
    
    (closes issue #14446)
    Reported by: frawd
    Patches:
          via_maddr.patch uploaded by frawd (license 610)
    Tested by: frawd
  ........
................

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

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

Modified: branches/1.6.1/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.1/channels/chan_sip.c?view=diff&rev=230147&r1=230146&r2=230147
==============================================================================
--- branches/1.6.1/channels/chan_sip.c (original)
+++ branches/1.6.1/channels/chan_sip.c Fri Nov 13 16:01:24 2009
@@ -12866,7 +12866,7 @@
 static void check_via(struct sip_pvt *p, struct sip_request *req)
 {
 	char via[512];
-	char *c, *pt;
+	char *c, *pt, *maddr;
 	struct hostent *hp;
 	struct ast_hostent ahp;
 
@@ -12882,8 +12882,16 @@
 	if (c && (c[6] != '='))	/* rport query, not answer */
 		ast_set_flag(&p->flags[1], SIP_PAGE2_RPORT_PRESENT);
 
+	/* Check for maddr */
+	maddr = strstr(via, "maddr=");
+	if (maddr) {
+		maddr += 6;
+		c = maddr + strspn(maddr, "0123456789.");
+		*c = '\0';
+	}
+
 	c = strchr(via, ';');
-	if (c) 
+	if (c)
 		*c = '\0';
 
 	c = strchr(via, ' ');
@@ -12897,6 +12905,9 @@
 		pt = strchr(c, ':');
 		if (pt)
 			*pt++ = '\0';	/* remember port pointer */
+		/* Use maddr if found */
+		if (maddr)
+			c = maddr;
 		hp = ast_gethostbyname(c, &ahp);
 		if (!hp) {
 			ast_log(LOG_WARNING, "'%s' is not a valid host\n", c);




More information about the asterisk-commits mailing list