Module: kamailio
Branch: 4.4
Commit: ce3d1dd8360567fdf2c8e36fbb4a4238dab8f036
URL:
https://github.com/kamailio/kamailio/commit/ce3d1dd8360567fdf2c8e36fbb4a423…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Juha Heinanen <jh(a)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/ce3d1dd8360567fdf2c8e36fbb4a423…
Patch:
https://github.com/kamailio/kamailio/commit/ce3d1dd8360567fdf2c8e36fbb4a423…
---
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;