Module: kamailio Branch: master Commit: 6d157a4af708108b90a338614869de0ceeb94b68 URL: https://github.com/kamailio/kamailio/commit/6d157a4af708108b90a338614869de0ceeb94b68
Author: Victor Seva <linuxman...@torreviejawireless.org> Committer: Victor Seva <linuxman...@torreviejawireless.org> Date: 2017-02-02T12:43:53+01:00 presence: remove transaction creation from publ_notify_notifier() and mark_presentity_for_delete() * publ_notify_notifier() and mark_presentity_for_delete() are called inside a already created transaction * adding transaction handle for msg_presentity_clean() fix #960 --- Modified: src/modules/presence/notify.c Modified: src/modules/presence/presentity.c Modified: src/modules/presence/publish.c --- Diff: https://github.com/kamailio/kamailio/commit/6d157a4af708108b90a338614869de0ceeb94b68.diff Patch: https://github.com/kamailio/kamailio/commit/6d157a4af708108b90a338614869de0ceeb94b68.patch --- diff --git a/src/modules/presence/notify.c b/src/modules/presence/notify.c index caf5a3d..e5cd1cd 100644 --- a/src/modules/presence/notify.c +++ b/src/modules/presence/notify.c @@ -1363,15 +1363,6 @@ int publ_notify_notifier(str pres_uri, pres_ev_t *event) result_cols[r_to_tag_col=n_result_cols++] = &str_to_tag_col; result_cols[r_from_tag_col=n_result_cols++] = &str_from_tag_col; - if (pa_dbf.start_transaction) - { - if (pa_dbf.start_transaction(pa_db, db_table_lock) < 0) - { - LM_ERR("in start_transaction\n"); - goto error; - } - } - if(query_fn(pa_db, query_cols, 0, query_vals, result_cols, n_query_cols, n_result_cols, 0, &result )< 0) { @@ -1400,26 +1391,11 @@ int publ_notify_notifier(str pres_uri, pres_ev_t *event) set_updated(&subs); } - if (pa_dbf.end_transaction) - { - if (pa_dbf.end_transaction(pa_db) < 0) - { - LM_ERR("in end_transaction\n"); - goto error; - } - } - ret = RES_ROW_N(result); error: if (result) pa_dbf.free_result(pa_db, result); - if (pa_dbf.abort_transaction) - { - if (pa_dbf.abort_transaction(pa_db) < 0) - LM_ERR("in abort_transaction\n"); - } - return ret; } diff --git a/src/modules/presence/presentity.c b/src/modules/presence/presentity.c index 87d1ac7..9755c4f 100644 --- a/src/modules/presence/presentity.c +++ b/src/modules/presence/presentity.c @@ -1568,15 +1568,6 @@ int mark_presentity_for_delete(presentity_t *pres) result_cols[0] = &str_body_col; - if (pa_dbf.start_transaction) - { - if (pa_dbf.start_transaction(pa_db, db_table_lock) < 0) - { - LM_ERR("in start_transaction\n"); - goto error; - } - } - if (query_fn(pa_db, query_cols, 0, query_vals, result_cols, n_query_cols, 1, 0, &result) < 0) { @@ -1657,15 +1648,6 @@ int mark_presentity_for_delete(presentity_t *pres) goto error; } - if (pa_dbf.end_transaction) - { - if (pa_dbf.end_transaction(pa_db) < 0) - { - LM_ERR("in end_transaction\n"); - goto error; - } - } - if (pa_dbf.affected_rows) ret = pa_dbf.affected_rows(pa_db); else @@ -1677,12 +1659,6 @@ int mark_presentity_for_delete(presentity_t *pres) if (cur_body) pkg_free(cur_body); if (result) pa_dbf.free_result(pa_db, result); - if (pa_dbf.abort_transaction) - { - if (pa_dbf.abort_transaction(pa_db) < 0) - LM_ERR("in abort_transaction\n"); - } - return ret; } diff --git a/src/modules/presence/publish.c b/src/modules/presence/publish.c index b2186cd..65e5154 100644 --- a/src/modules/presence/publish.c +++ b/src/modules/presence/publish.c @@ -164,9 +164,22 @@ void msg_presentity_clean(unsigned int ticks,void *param) } else if (pres_notifier_processes > 0) { + if (pa_dbf.start_transaction) + { + if (pa_dbf.start_transaction(pa_db, db_table_lock) < 0) + { + LM_ERR("in start_transaction\n"); + goto error; + } + } if ((num_watchers = publ_notify_notifier(uri, pres.event)) < 0) { LM_ERR("Updating watcher records\n"); + if (pa_dbf.abort_transaction) + { + if (pa_dbf.abort_transaction(pa_db) < 0) + LM_ERR("in abort_transaction\n"); + } goto error; } @@ -175,6 +188,11 @@ void msg_presentity_clean(unsigned int ticks,void *param) if (mark_presentity_for_delete(&pres) < 0) { LM_ERR("Marking presentity\n"); + if (pa_dbf.abort_transaction) + { + if (pa_dbf.abort_transaction(pa_db) < 0) + LM_ERR("in abort_transaction\n"); + } goto error; } } @@ -186,6 +204,14 @@ void msg_presentity_clean(unsigned int ticks,void *param) goto error; } } + if (pa_dbf.end_transaction) + { + if (pa_dbf.end_transaction(pa_db) < 0) + { + LM_ERR("in end_transaction\n"); + goto error; + } + } } else { _______________________________________________ sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev