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

Author: Timo Reimann <[email protected]>
Committer: Timo Reimann <[email protected]>
Date:   Mon Sep 12 11:20:55 2011 +0200

modules_k/dialog: Do not log an ERROR level message when
attempting to delete a non-existing dialog variable, thereby
bringing dialog variable behavior more in line with AVP behavior.

Credits to Anca Vamanu ([email protected]).

---

 modules_k/dialog/dlg_var.c |   36 ++++++++++++++----------------------
 1 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/modules_k/dialog/dlg_var.c b/modules_k/dialog/dlg_var.c
index 3226bc4..310b674 100644
--- a/modules_k/dialog/dlg_var.c
+++ b/modules_k/dialog/dlg_var.c
@@ -150,10 +150,9 @@ int set_dlg_variable_unsafe(struct dlg_cell *dlg, str 
*key, str *val)
        }
 
        /* not found: */
-
        if (!var) {
-               LM_ERR("dialog variable <%.*s> does not exist in variable 
list\n", key->len, key->s);
-               return -1;
+               LM_DBG("dialog variable <%.*s> does not exist in variable 
list\n", key->len, key->s);
+               return 1;
        }
 
        /* insert a new one at the beginning of the list */
@@ -240,6 +239,7 @@ str * get_dlg_variable(struct dlg_cell *dlg, str *key)
 
 int set_dlg_variable(struct dlg_cell *dlg, str *key, str *val)
 {
+    int ret = -1;
     if( !dlg || !key || key->len > strlen(key->s) || (val && val->len > 
strlen(val->s)))
     {
         LM_ERR("BUG - bad parameters\n");
@@ -248,18 +248,9 @@ int set_dlg_variable(struct dlg_cell *dlg, str *key, str 
*val)
 
     dlg_lock(d_table, &(d_table->entries[dlg->h_entry]));
 
-    if( !val)
-    {
-        if (set_dlg_variable_unsafe(dlg, key, NULL)!=0) {
-            LM_ERR("failed to delete dialog variable <%.*s>\n", 
key->len,key->s);
-            goto error;
-        }
-    } else {
-        if (set_dlg_variable_unsafe(dlg, key, val)!=0) {
-            LM_ERR("failed to store dialog values <%.*s>\n",key->len,key->s);
-            goto error;
-        }
-    }
+    ret = set_dlg_variable_unsafe(dlg, key, val);
+    if(ret!= 0)
+        goto done;
 
     dlg->dflags &= DLG_FLAG_CHANGED_VARS;
     dlg_unlock(d_table, &(d_table->entries[dlg->h_entry]));
@@ -270,9 +261,9 @@ int set_dlg_variable(struct dlg_cell *dlg, str *key, str 
*val)
 
     return 0;
 
-error:
+done:
     dlg_unlock(d_table, &(d_table->entries[dlg->h_entry]));
-    return -1;
+    return ret;
 }
 
 int pv_get_dlg_variable(struct sip_msg *msg, pv_param_t *param, pv_value_t 
*res)
@@ -313,6 +304,7 @@ int pv_get_dlg_variable(struct sip_msg *msg, pv_param_t 
*param, pv_value_t *res)
 int pv_set_dlg_variable(struct sip_msg* msg, pv_param_t *param, int op, 
pv_value_t *val)
 {
        struct dlg_cell *dlg;
+       int ret = -1;
 
        /* Retrieve the current dialog */
        dlg=get_current_dialog( msg);
@@ -332,11 +324,11 @@ int pv_set_dlg_variable(struct sip_msg* msg, pv_param_t 
*param, int op, pv_value
 
        if (val==NULL || val->flags&(PV_VAL_NONE|PV_VAL_NULL|PV_VAL_EMPTY)) {
                /* if NULL, remove the value */
-               if (set_dlg_variable_unsafe(dlg, &param->pvn.u.isname.name.s, 
NULL)!=0) {
-                       LM_ERR("failed to delete dialog variable <%.*s>\n", 
param->pvn.u.isname.name.s.len,param->pvn.u.isname.name.s.s);
+               ret = set_dlg_variable_unsafe(dlg, &param->pvn.u.isname.name.s, 
NULL);
+               if(ret!= 0) {
                        /* unlock dialog */
                        if (dlg) dlg_unlock(d_table, 
&(d_table->entries[dlg->h_entry]));
-                       return -1;
+                       return ret;
                }
        } else {
                /* if value, must be string */
@@ -347,8 +339,8 @@ int pv_set_dlg_variable(struct sip_msg* msg, pv_param_t 
*param, int op, pv_value
                        return -1;
                }
 
-               if (set_dlg_variable_unsafe(dlg, &param->pvn.u.isname.name.s, 
&val->rs)!=0) {
-                       LM_ERR("failed to store dialog values 
<%.*s>\n",param->pvn.u.isname.name.s.len,param->pvn.u.isname.name.s.s);
+               ret = set_dlg_variable_unsafe(dlg, &param->pvn.u.isname.name.s, 
&val->rs);
+               if(ret!= 0) {
                        /* unlock dialog */
                        if (dlg) dlg_unlock(d_table, 
&(d_table->entries[dlg->h_entry]));
                        return -1;


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to