[asterisk-commits] qwell: branch 1.4 r79904 - in /branches/1.4: channels/ include/asterisk/ main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Aug 17 14:12:20 CDT 2007


Author: qwell
Date: Fri Aug 17 14:12:19 2007
New Revision: 79904

URL: http://svn.digium.com/view/asterisk?view=rev&rev=79904
Log:
Don't send a semicolon over the wire in sip notify messages.
Caused by fix for issue 9938.

I basically took the code that existed before 9938 was fixed, and
 copied it into a new function - ast_unescape_semicolon

There should be very few places this will be needed (pbx_config
 does NOT need this (see issue 9938 for details))

Issue 10430, patch by me, with help/ideas from murf (thanks murf).

Modified:
    branches/1.4/channels/chan_sip.c
    branches/1.4/include/asterisk/strings.h
    branches/1.4/main/utils.c

Modified: branches/1.4/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_sip.c?view=diff&rev=79904&r1=79903&r2=79904
==============================================================================
--- branches/1.4/channels/chan_sip.c (original)
+++ branches/1.4/channels/chan_sip.c Fri Aug 17 14:12:19 2007
@@ -11120,7 +11120,7 @@
 		initreqprep(&req, p, SIP_NOTIFY);
 
 		for (var = varlist; var; var = var->next)
-			add_header(&req, var->name, var->value);
+			add_header(&req, var->name, ast_unescape_semicolon(var->value));
 
 		/* Recalculate our side, and recalculate Call ID */
 		if (ast_sip_ouraddrfor(&p->sa.sin_addr, &p->ourip))

Modified: branches/1.4/include/asterisk/strings.h
URL: http://svn.digium.com/view/asterisk/branches/1.4/include/asterisk/strings.h?view=diff&rev=79904&r1=79903&r2=79904
==============================================================================
--- branches/1.4/include/asterisk/strings.h (original)
+++ branches/1.4/include/asterisk/strings.h Fri Aug 17 14:12:19 2007
@@ -142,6 +142,13 @@
 char *ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes);
 
 /*!
+  \brief Strip backslash for "escaped" semicolons.
+  \brief s The string to be stripped (will be modified).
+  \return The stripped string.
+ */
+char *ast_unescape_semicolon(char *s);
+
+/*!
   \brief Size-limited null-terminating string copy.
   \param ast_copy_string function being used
   \param dst The destination buffer.

Modified: branches/1.4/main/utils.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/utils.c?view=diff&rev=79904&r1=79903&r2=79904
==============================================================================
--- branches/1.4/main/utils.c (original)
+++ branches/1.4/main/utils.c Fri Aug 17 14:12:19 2007
@@ -880,6 +880,21 @@
 	return s;
 }
 
+char *ast_unescape_semicolon(char *s)
+{
+	char *e;
+	char *work = s;
+
+	while ((e = strchr(work, ';'))) {
+		if ((e > work) && (*(e-1) == '\\')) {
+			memmove(e - 1, e, strlen(e) + 1);
+			work = e;
+		}
+	}
+
+	return s;
+}
+
 int ast_build_string_va(char **buffer, size_t *space, const char *fmt, va_list ap)
 {
 	int result;




More information about the asterisk-commits mailing list