[Devel] Patch: cpl-c bug fix for nat flag in branches

John Riordan john at junctionnetworks.com
Fri Nov 3 15:07:16 CET 2006


Hi,


Issue:

In CPL, during a proxy to a location set the
value of the branch flag being passed to append_branch
is currently the configured value for "nat_flag" (ie 6).
However, append_branch is expecting a bit mapped flag value (ie 0x40).

Also in CPL, the nat flag is getting set for the msg
if any branches have the nat flag set. This can cause
the RURI branch to have the nat flag set when the
location associated with the RURI branch does not
have the branch flag set.


Patch:

Addressed the two issues above.

Also, to be consistant with the default used in the
registrar module, made the default for nat flag -1
in the cpl-c module.


John



-------------- next part --------------
Index: sip-server/modules/cpl-c/README
===================================================================
RCS file: /cvsroot/openser/sip-server/modules/cpl-c/README,v
retrieving revision 1.5
diff -u -r1.5 README
--- sip-server/modules/cpl-c/README	9 Feb 2006 17:28:25 -0000	1.5
+++ sip-server/modules/cpl-c/README	29 Oct 2006 05:28:27 -0000
@@ -304,11 +304,11 @@
    tag when retrieving a contact behind a NAT (this flag will be
    set).
 
-   Default value of this parameter is 6. 
+   Default value is -1 (disabled).
 
    Example 1-14. Set nat_flag parameter
 ...
-modparam("cpl_c","nat_flag",4)
+modparam("cpl_c","nat_flag",6)
 ...
      _________________________________________________________
 
Index: sip-server/modules/cpl-c/cpl.c
===================================================================
RCS file: /cvsroot/openser/sip-server/modules/cpl-c/cpl.c,v
retrieving revision 1.13
diff -u -r1.13 cpl.c
--- sip-server/modules/cpl-c/cpl.c	10 Oct 2006 18:45:56 -0000	1.13
+++ sip-server/modules/cpl-c/cpl.c	29 Oct 2006 05:28:27 -0000
@@ -83,7 +83,7 @@
 		0, /* no cpl logging */
 		0, /* recurse proxy level is 0 */
 		0, /* no script route to be run before proxy */
-		6, /* nat flag */
+		-1, /* nat flag */
 		0, /* user part is not case sensitive */
 		{0,0},   /* no domain prefix to be ignored */
 		{-1,-1}, /* communication pipe to aux_process */
@@ -404,6 +404,9 @@
 		strlower( &cpl_env.realm_prefix );
 	}
 
+	/* fix the flags */
+	cpl_env.nat_flag = (cpl_env.nat_flag!=-1)?(1<<cpl_env.nat_flag):0;
+
 	return 0;
 error:
 	return -1;
Index: sip-server/modules/cpl-c/cpl_sig.c
===================================================================
RCS file: /cvsroot/openser/sip-server/modules/cpl-c/cpl_sig.c,v
retrieving revision 1.7
diff -u -r1.7 cpl_sig.c
--- sip-server/modules/cpl-c/cpl_sig.c	6 Apr 2006 18:21:56 -0000	1.7
+++ sip-server/modules/cpl-c/cpl_sig.c	29 Oct 2006 05:28:27 -0000
@@ -78,10 +78,9 @@
 				goto error;
 			}
 		}
-		/* is the location NATED? */
+		/* for RURI branch, the nat flag goes into msg */
 		if ((*locs)->flags&CPL_LOC_NATED)
-			/* for RURI branch, the nat flag goes into msg */
-			setflag(msg,cpl_env.nat_flag);
+			msg->flags |= cpl_env.nat_flag;
 		/* free the location and point to the next one */
 		foo = (*locs)->next;
 		free_location( *locs );
@@ -100,8 +99,6 @@
 				"appending branch <%s>\n",(*locs)->addr.uri.s);
 			goto error;
 		}
-		/* is the location NATED? */
-		if (bflags) setflag(msg,bflags);
 		/* free the location and point to the next one */
 		foo = (*locs)->next;
 		free_location( *locs );
Index: sip-server/modules/cpl-c/doc/cpl-c_user.sgml
===================================================================
RCS file: /cvsroot/openser/sip-server/modules/cpl-c/doc/cpl-c_user.sgml,v
retrieving revision 1.6
diff -u -r1.6 cpl-c_user.sgml
--- sip-server/modules/cpl-c/doc/cpl-c_user.sgml	9 Feb 2006 17:28:25 -0000	1.6
+++ sip-server/modules/cpl-c/doc/cpl-c_user.sgml	29 Oct 2006 05:28:27 -0000
@@ -361,14 +361,14 @@
 			</para>
 			<para>
 				<emphasis>
-					Default value of this parameter is 6.
+					Default value is -1 (disabled).
 				</emphasis>
 			</para>
 			<example>
 				<title>Set <varname>nat_flag</varname> parameter</title>
 				<programlisting format="linespecific">
 ...
-modparam("cpl_c","nat_flag",4)
+modparam("cpl_c","nat_flag",6)
 ...
 </programlisting>
 			</example>



More information about the Devel mailing list