2
0
Эх сурвалжийг харах

core: helper functions to add headers with str parameters

Daniel-Constantin Mierla 9 жил өмнө
parent
commit
4e49312d0d
2 өөрчлөгдсөн 37 нэмэгдсэн , 13 устгасан
  1. 35 13
      data_lump.c
  2. 2 0
      data_lump.h

+ 35 - 13
data_lump.c

@@ -738,19 +738,12 @@ int remove_lump(sip_msg_t *msg, struct lump *l)
 /**
  *
  */
-int sr_hdr_add_zz(sip_msg_t *msg, char *hname, char *hbody)
+int sr_hdr_add(sip_msg_t *msg, str *sname, str *sbody)
 {
 	struct lump* anchor;
 	str h;
-	str sname;
-	str sbody;
 
-	sname.s = hname;
-	sname.len = strlen(sname.s);
-	sbody.s = hbody;
-	sbody.len = strlen(sbody.s);
-
-	h.len = sname.len + 2 + sbody.len + 1 + CRLF_LEN;
+	h.len = sname->len + 2 + sbody->len + 1 + CRLF_LEN;
 	h.s = (char*)pkg_malloc(h.len+1);
 	if(h.s == 0) {
 		LM_ERR("no more pkg\n");
@@ -763,10 +756,10 @@ int sr_hdr_add_zz(sip_msg_t *msg, char *hname, char *hbody)
 		pkg_free(h.s);
 		return -1;
 	}
-	memcpy(h.s, sname.s, sname.len);
-	memcpy(h.s+sname.len, ": ", 2);
-	memcpy(h.s+sname.len+2, sbody.s, sbody.len);
-	memcpy(h.s+sname.len+2+sbody.len, CRLF, CRLF_LEN);
+	memcpy(h.s, sname->s, sname->len);
+	memcpy(h.s+sname->len, ": ", 2);
+	memcpy(h.s+sname->len+2, sbody->s, sbody->len);
+	memcpy(h.s+sname->len+2+sbody->len, CRLF, CRLF_LEN);
 	h.s[h.len] = '\0';
 	if (insert_new_lump_before(anchor, h.s, h.len, 0) == 0)
 	{
@@ -778,6 +771,35 @@ int sr_hdr_add_zz(sip_msg_t *msg, char *hname, char *hbody)
 	return 0;
 }
 
+/**
+ *
+ */
+int sr_hdr_add_zz(sip_msg_t *msg, char *hname, char *hbody)
+{
+	str sname;
+	str sbody;
+
+	sname.s = hname;
+	sname.len = strlen(sname.s);
+	sbody.s = hbody;
+	sbody.len = strlen(sbody.s);
+
+	return sr_hdr_add(msg, &sname, &sbody);
+}
+
+/**
+ *
+ */
+int sr_hdr_add_zs(sip_msg_t *msg, char *hname, str *sbody)
+{
+	str sname;
+
+	sname.s = hname;
+	sname.len = strlen(sname.s);
+
+	return sr_hdr_add(msg, &sname, sbody);
+}
+
 /**
  *
  */

+ 2 - 0
data_lump.h

@@ -87,7 +87,9 @@ void del_nonshm_lump( struct lump** lump_list );
 /*! \brief remove the lump from the internal lists */
 int remove_lump(sip_msg_t *msg, struct lump *l);
 
+int sr_hdr_add(sip_msg_t *msg, str *sname, str *sbody);
 int sr_hdr_add_zz(sip_msg_t *msg, char *hname, char *hbody);
+int sr_hdr_add_zs(sip_msg_t *msg, char *hname, str *sbody);
 int sr_hdr_del_z(sip_msg_t *msg, char *hname);
 hdr_field_t *sr_hdr_get_z(sip_msg_t *msg, char *hname);