[sr-dev] git:3.3: dialog(k): reset default value for optional parameter

Daniel-Constantin Mierla miconda at gmail.com
Fri Dec 14 00:46:06 CET 2012


Module: sip-router
Branch: 3.3
Commit: 7d822fcbd1f26b5da5a45abc2c7bb7aae72cb487
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7d822fcbd1f26b5da5a45abc2c7bb7aae72cb487

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Fri Dec 14 00:43:04 2012 +0100

dialog(k): reset default value for optional parameter

- some rpc transports set a static string for missing optional
  parameters, causing invalid value
- dlg.bridge_dlg proper handling of optional parameters return code
(cherry picked from commit 7fc74e46a5d5b4e2b0cbbe5bdc1627e672867164)

---

 modules_k/dialog/dialog.c |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/modules_k/dialog/dialog.c b/modules_k/dialog/dialog.c
index 2896343..ef89c99 100644
--- a/modules_k/dialog/dialog.c
+++ b/modules_k/dialog/dialog.c
@@ -1592,7 +1592,11 @@ static void rpc_end_dlg_entry_id(rpc_t *rpc, void *c) {
 		rpc->fault(c, 500, "Invalid parameters");
 		return;
 	}
-	rpc->scan(c, "*S", &rpc_extra_hdrs);
+	if(rpc->scan(c, "*S", &rpc_extra_hdrs)<1)
+	{
+		rpc_extra_hdrs.s = NULL;
+		rpc_extra_hdrs.len = 0;
+	}
 
 	dlg = dlg_lookup(h_entry, h_id);
 	if(dlg==NULL) {
@@ -1631,8 +1635,18 @@ static void rpc_dlg_bridge(rpc_t *rpc, void *c) {
 	str from = {NULL,0};
 	str to = {NULL,0};
 	str op = {NULL,0};
+	int n;
 
-	if (rpc->scan(c, "SS*S", &from, &to, &op) < 2) return;
+	n = rpc->scan(c, "SS", &from, &to);
+	if (n< 2) {
+		LM_ERR("unable to read the parameters (%d)\n", n);
+		rpc->fault(c, 500, "Invalid parameters");
+		return;
+	}
+	if(rpc->scan(c, "*S", &op)<1) {
+		op.s = NULL;
+		op.len = 0;
+	}
 
 	dlg_bridge(&from, &to, &op);
 }




More information about the sr-dev mailing list