aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authormnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-22 13:05:16 +0000
committermnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-22 13:05:16 +0000
commitbb19a9e9abfd47440d28f42bbf2f3b78d39d6a49 (patch)
treea691453318350e4b207a08db31199f047c24face /include
parentde65b960b78ca43c74008889193b1e77319966cf (diff)
Merged revisions 271690 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r271690 | mnicholson | 2010-06-22 07:58:28 -0500 (Tue, 22 Jun 2010) | 18 lines Merged revisions 271689 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r271689 | mnicholson | 2010-06-22 07:52:27 -0500 (Tue, 22 Jun 2010) | 8 lines Modify chan_sip's packet generation api to automatically calculate the Content-Length. This is done by storing packet content in a buffer until it is actually time to send the packet, at which time the size of the packet is calculated. This change was made to ensure that the Content-Length is always correct. (closes issue #17326) Reported by: kenner Tested by: mnicholson, kenner Review: https://reviewboard.asterisk.org/r/693/ ........ This change also adds an ast_str_copy_string() function (similar to ast_copy_string), that copies one ast_str into another, properly handling embedded nulls. ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@271691 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/strings.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/asterisk/strings.h b/include/asterisk/strings.h
index efa9ddd00..ec20c90e7 100644
--- a/include/asterisk/strings.h
+++ b/include/asterisk/strings.h
@@ -573,6 +573,23 @@ int ast_str_make_space(struct ast_str **buf, size_t new_len),
)
#endif
+AST_INLINE_API(
+int ast_str_copy_string(struct ast_str **dst, struct ast_str *src),
+{
+
+ /* make sure our destination is large enough */
+ if (src->__AST_STR_USED + 1 > (*dst)->__AST_STR_LEN) {
+ if (ast_str_make_space(dst, src->__AST_STR_USED + 1)) {
+ return -1;
+ }
+ }
+
+ memcpy((*dst)->__AST_STR_STR, src->__AST_STR_STR, src->__AST_STR_USED + 1);
+ (*dst)->__AST_STR_USED = src->__AST_STR_USED;
+ return 0;
+}
+)
+
#define ast_str_alloca(init_len) \
({ \
struct ast_str *__ast_str_buf; \