[svn-commits] jamesgolovich: branch jamesgolovich/chan_sip-ast_str r102060 - /team/jamesgol...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Feb 2 02:17:44 CST 2008


Author: jamesgolovich
Date: Sat Feb  2 02:17:42 2008
New Revision: 102060

URL: http://svn.digium.com/view/asterisk?view=rev&rev=102060
Log:
Use memcpy for copy_request since a sip_request->data might have already
been parsed and contain \0 instead of \r\n

Change parse_copy to use copy_request function instead of reimplementing


Modified:
    team/jamesgolovich/chan_sip-ast_str/channels/chan_sip.c

Modified: team/jamesgolovich/chan_sip-ast_str/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/jamesgolovich/chan_sip-ast_str/channels/chan_sip.c?view=diff&rev=102060&r1=102059&r2=102060
==============================================================================
--- team/jamesgolovich/chan_sip-ast_str/channels/chan_sip.c (original)
+++ team/jamesgolovich/chan_sip-ast_str/channels/chan_sip.c Sat Feb  2 02:17:42 2008
@@ -3026,11 +3026,7 @@
 /*! \brief Copy SIP request, parse it */
 static void parse_copy(struct sip_request *dst, const struct sip_request *src)
 {
-	memset(dst, 0, sizeof(*dst));
-	if (!(dst->data = ast_str_create(src->len)))
-		return;
-	dst->len = src->len;
-	ast_str_set(&dst->data, 0, "%s", src->data->str);
+	copy_request(dst, src);
 	parse_request(dst);
 }
 
@@ -8104,9 +8100,11 @@
 
 	if (!dst->data && !(dst->data = ast_str_create(src->data->used)))
 		return;
+	else if (dst->data->len < src->data->used)
+		ast_str_make_space(&dst->data, src->data->used);
 		
-	if (ast_str_set(&dst->data, 0, "%s", src->data->str) == AST_DYNSTR_BUILD_FAILED) 
-		return;
+	memcpy(dst->data->str, src->data->str, src->data->used);
+	dst->data->used = src->data->used;
 	offset = ((void *)dst->data->str) - ((void *)src->data->str);
 	/* Now fix pointer arithmetic */
 	for (x=0; x < src->headers; x++)




More information about the svn-commits mailing list