summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src')
-rw-r--r--pjsip/src/pjsip/sip_msg.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/pjsip/src/pjsip/sip_msg.c b/pjsip/src/pjsip/sip_msg.c
index d5eb1009..1e4c5729 100644
--- a/pjsip/src/pjsip/sip_msg.c
+++ b/pjsip/src/pjsip/sip_msg.c
@@ -505,6 +505,25 @@ static pjsip_hdr_vptr generic_hdr_vptr =
(pjsip_hdr_print_fptr) &pjsip_generic_string_hdr_print,
};
+
+PJ_DEF(void) pjsip_generic_string_hdr_init2(pjsip_generic_string_hdr *hdr,
+ pj_str_t *hname,
+ pj_str_t *hvalue)
+{
+ init_hdr(hdr, PJSIP_H_OTHER, &generic_hdr_vptr);
+ if (hname) {
+ hdr->name = *hname;
+ hdr->sname = *hname;
+ }
+ if (hvalue) {
+ hdr->hvalue = *hvalue;
+ } else {
+ hdr->hvalue.ptr = NULL;
+ hdr->hvalue.slen = 0;
+ }
+}
+
+
PJ_DEF(pjsip_generic_string_hdr*)
pjsip_generic_string_hdr_init( pj_pool_t *pool,
void *mem,
@@ -512,19 +531,21 @@ pjsip_generic_string_hdr_init( pj_pool_t *pool,
const pj_str_t *hvalue)
{
pjsip_generic_string_hdr *hdr = mem;
+ pj_str_t dup_hname, dup_hval;
- init_hdr(hdr, PJSIP_H_OTHER, &generic_hdr_vptr);
if (hnames) {
- pj_strdup(pool, &hdr->name, hnames);
- hdr->sname = hdr->name;
+ pj_strdup(pool, &dup_hname, hnames);
+ } else {
+ dup_hname.slen = 0;
}
+
if (hvalue) {
- pj_strdup(pool, &hdr->hvalue, hvalue);
+ pj_strdup(pool, &dup_hval, hvalue);
} else {
- hdr->hvalue.ptr = NULL;
- hdr->hvalue.slen = 0;
+ dup_hval.slen = 0;
}
+ pjsip_generic_string_hdr_init2(hdr, &dup_hname, &dup_hval);
return hdr;
}