[sr-dev] git:master:dd0b7e40: dialog: propre reparse of msg structure when doing cseq refresh ops

Daniel-Constantin Mierla miconda at gmail.com
Mon Oct 17 12:29:38 CEST 2016


Module: kamailio
Branch: master
Commit: dd0b7e403404a977707aa1524783111190cc5f3e
URL: https://github.com/kamailio/kamailio/commit/dd0b7e403404a977707aa1524783111190cc5f3e

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2016-10-17T12:27:08+02:00

dialog: propre reparse of msg structure when doing cseq refresh ops

- triggering parsing from scratch always resulted in improper
  propagation of parsing flags and failure to detect end of headers
- credits to Jöran Vinzens for assistance with troubleshooting
- GH #819

---

Modified: modules/dialog/dlg_cseq.c

---

Diff:  https://github.com/kamailio/kamailio/commit/dd0b7e403404a977707aa1524783111190cc5f3e.diff
Patch: https://github.com/kamailio/kamailio/commit/dd0b7e403404a977707aa1524783111190cc5f3e.patch

---

diff --git a/modules/dialog/dlg_cseq.c b/modules/dialog/dlg_cseq.c
index 4d60180..743a61d 100644
--- a/modules/dialog/dlg_cseq.c
+++ b/modules/dialog/dlg_cseq.c
@@ -53,12 +53,9 @@ static str _dlg_cseq_diff_var_name = str_init("cseq_diff");
 /**
  *
  */
-int dlg_cseq_prepare_msg(sip_msg_t *msg)
+static int dlg_cseq_prepare_msg(sip_msg_t *msg)
 {
-	if (parse_msg(msg->buf, msg->len, msg)!=0) {
-		LM_DBG("outbuf buffer parsing failed!");
-		return 1;
-	}
+	LM_DBG("prepare msg for cseq update operations\n");
 
 	if(msg->first_line.type==SIP_REQUEST) {
 		if(!IS_SIP(msg))
@@ -109,6 +106,19 @@ int dlg_cseq_prepare_msg(sip_msg_t *msg)
 /**
  *
  */
+static int dlg_cseq_prepare_new_msg(sip_msg_t *msg)
+{
+	LM_DBG("prepare new msg for cseq update operations\n");
+	if (parse_msg(msg->buf, msg->len, msg)!=0) {
+		LM_DBG("outbuf buffer parsing failed!");
+		return 1;
+	}
+	return dlg_cseq_prepare_msg(msg);
+}
+
+/**
+ *
+ */
 int dlg_cseq_update(sip_msg_t *msg)
 {
 	dlg_cell_t *dlg = NULL;
@@ -268,7 +278,7 @@ int dlg_cseq_msg_received(void *data)
 	msg.buf = obuf->s;
 	msg.len = obuf->len;
 
-	if(dlg_cseq_prepare_msg(&msg)!=0) {
+	if(dlg_cseq_prepare_new_msg(&msg)!=0) {
 		goto done;
 	}
 
@@ -350,7 +360,7 @@ int dlg_cseq_msg_sent(void *data)
 	msg.buf = obuf->s;
 	msg.len = obuf->len;
 
-	if(dlg_cseq_prepare_msg(&msg)!=0) {
+	if(dlg_cseq_prepare_new_msg(&msg)!=0) {
 		goto done;
 	}
 




More information about the sr-dev mailing list