[sr-dev] git:master: dialog: init cseq to 0 if not available yet for one side

Daniel-Constantin Mierla miconda at gmail.com
Tue Nov 5 10:40:48 CET 2013


Module: sip-router
Branch: master
Commit: 082a6c43938cf8e3839d46fd070e391bd522d4ed
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=082a6c43938cf8e3839d46fd070e391bd522d4ed

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Tue Nov  5 10:33:55 2013 +0100

dialog: init cseq to 0 if not available yet for one side

- based on a report by Morten Isaksen

---

 modules/dialog/dlg_hash.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/modules/dialog/dlg_hash.c b/modules/dialog/dlg_hash.c
index 6f944e1..d346800 100644
--- a/modules/dialog/dlg_hash.c
+++ b/modules/dialog/dlg_hash.c
@@ -517,18 +517,24 @@ int dlg_set_leg_info(struct dlg_cell *dlg, str* tag, str *rr, str *contact,
 					str *cseq, unsigned int leg)
 {
 	char *p;
+	str cs = {"0", 1};
+
+	/* if we don't have cseq, set it to 0 */
+	if(cseq->len>0) {
+		cs = *cseq;
+	}
 
 	if(dlg->tag[leg].s)
 		shm_free(dlg->tag[leg].s);
 	dlg->tag[leg].s = (char*)shm_malloc( tag->len + rr->len + contact->len );
 
 	if(dlg->cseq[leg].s) {
-		if (dlg->cseq[leg].len < cseq->len) {
+		if (dlg->cseq[leg].len < cs.len) {
 			shm_free(dlg->cseq[leg].s);
-			dlg->cseq[leg].s = (char*)shm_malloc(cseq->len);
+			dlg->cseq[leg].s = (char*)shm_malloc(cs.len);
 		}
 	} else {
-		dlg->cseq[leg].s = (char*)shm_malloc( cseq->len );
+		dlg->cseq[leg].s = (char*)shm_malloc( cs.len );
 	}
 
 	if ( dlg->tag[leg].s==NULL || dlg->cseq[leg].s==NULL) {
@@ -564,8 +570,8 @@ int dlg_set_leg_info(struct dlg_cell *dlg, str* tag, str *rr, str *contact,
 	}
 
 	/* cseq */
-	dlg->cseq[leg].len = cseq->len;
-	memcpy( dlg->cseq[leg].s, cseq->s, cseq->len);
+	dlg->cseq[leg].len = cs.len;
+	memcpy( dlg->cseq[leg].s, cs.s, cs.len);
 
 	return 0;
 }




More information about the sr-dev mailing list