Browse Source

- added debug message for bridge function
- proper handling of reply code for request function
- safety check for OP parameter via MI


git-svn-id: https://openser.svn.sourceforge.net/svnroot/openser/trunk@5534 689a6050-402a-0410-94f2-e92a70836424

Daniel-Constantin Mierla 16 years ago
parent
commit
551f47c526
2 changed files with 7 additions and 2 deletions
  1. 4 0
      modules_k/dialog/dialog.c
  2. 3 2
      modules_k/dialog/dlg_transfer.c

+ 4 - 0
modules_k/dialog/dialog.c

@@ -1041,6 +1041,10 @@ struct mi_root * mi_dlg_bridge(struct mi_root *cmd_tree, void *param)
 	if(node != NULL)
 	{
 		op = node->value;
+		if(op.len<=0 || op.s==NULL)
+		{
+			return init_mi_tree(500, "Bad OP value", 12);
+		}
 	}
 
 	if(dlg_bridge(&from, &to, &op)!=0)

+ 3 - 2
modules_k/dialog/dlg_transfer.c

@@ -183,7 +183,6 @@ static int dlg_refer_callee(dlg_transfer_ctx_t *dtc)
 error:
 	if(dialog_info)
 		free_tm_dlg(dialog_info);
-	dlg_transfer_ctx_free(dtc);
 	return -1;
 }
 
@@ -313,6 +312,8 @@ int dlg_bridge(str *from, str *to, str *op)
 	dtc->to.len = to->len;
 	dtc->to.s[dtc->to.len] = '\0';
 
+	LM_DBG("bridge <%.*s> to <%.*s>\n", dtc->from.len, dtc->from.s,
+			dtc->to.len, dtc->to.s);
 	s_body.s   = DLG_HOLD_SDP;
 	s_body.len = DLG_HOLD_SDP_LEN;
 	s_hdrs.s   = DLG_HOLD_CT_HDR;
@@ -329,7 +330,7 @@ int dlg_bridge(str *from, str *to, str *op)
 		(void*)(long)dtc        /* Callback parameter */
 		);
 
-	if(ret!=0)
+	if(ret<0)
 	{
 		dlg_transfer_ctx_free(dtc);
 		return -1;