Module: kamailio
Branch: 4.4
Commit: ce3d1dd8360567fdf2c8e36fbb4a4238dab8f036
URL: 
https://github.com/kamailio/kamailio/commit/ce3d1dd8360567fdf2c8e36fbb4a4238dab8f036

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Juha Heinanen <j...@tutpro.com>
Date: 2016-09-17T09:30:30+03:00

presence: test if event is dialog for checking terminated state in presentity 
update

- reported by Juha Heinanen

(cherry picked from commit f2ef2a9016f41e97d3466b34b4039e66505d53a1)

---

Modified: modules/presence/presentity.c

---

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

---

diff --git a/modules/presence/presentity.c b/modules/presence/presentity.c
index b78f84a..b5d7b65 100644
--- a/modules/presence/presentity.c
+++ b/modules/presence/presentity.c
@@ -494,7 +494,7 @@ int get_dialog_state(presentity_t* presentity, char** state)
        }
 
        if (pa_dbf.query (pa_db, query_cols, query_ops, query_vals,
-        result_cols, n_query_cols, n_result_cols, 0, &result) < 0)
+                               result_cols, n_query_cols, n_result_cols, 0, 
&result) < 0)
        {
                LM_ERR("unsuccessful sql query\n");
                return -2;
@@ -515,7 +515,8 @@ int get_dialog_state(presentity_t* presentity, char** state)
                tmp_db_body.s = (char*)row_vals[rez_body_col].val.string_val;
                tmp_db_body.len = strlen(tmp_db_body.s);
 
-               parse_state_result = parse_dialog_state_from_body(tmp_db_body, 
&db_is_dialog, state);
+               parse_state_result = parse_dialog_state_from_body(tmp_db_body,
+                               &db_is_dialog, state);
 
                pa_dbf.free_result(pa_db, result);
                result = NULL;
@@ -966,23 +967,25 @@ int update_presentity(struct sip_msg* msg, presentity_t* 
presentity, str* body,
                else
                        cur_etag= presentity->etag;
 
-               if (is_dialog_terminated(presentity))
-               {
-                       LM_WARN("Trying to update an already terminated state. 
Skipping update.\n");
-
-                       /* send 200OK */
-                       if (publ_send200ok(msg, presentity->expires, cur_etag)< 
0)
+               if (presentity->event->evp->type==EVENT_DIALOG) {
+                       if(is_dialog_terminated(presentity))
                        {
-                               LM_ERR("sending 200OK reply\n");
-                               goto error;
-                       }
-                       if (sent_reply) *sent_reply= 1;
+                               LM_WARN("Trying to update an already terminated 
state."
+                                               " Skipping update.\n");
 
-                       if(etag.s)
-                               pkg_free(etag.s);
-                       etag.s= NULL;
+                               /* send 200OK */
+                               if (publ_send200ok(msg, presentity->expires, 
cur_etag)< 0) {
+                                       LM_ERR("sending 200OK reply\n");
+                                       goto error;
+                               }
+                               if (sent_reply) *sent_reply= 1;
 
-                       goto done;
+                               if(etag.s)
+                                       pkg_free(etag.s);
+                               etag.s= NULL;
+
+                               goto done;
+                       }
                }
 
                update_keys[n_update_cols] = &str_expires_col;


_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to