Module: sip-router Branch: master Commit: b5e1edb80c459e09b8097c45643c6afc44ab2ed4 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=b5e1edb8...
Author: Peter Dunkley peter.dunkley@crocodile-rcs.com Committer: Peter Dunkley peter.dunkley@crocodile-rcs.com Date: Wed May 2 17:55:50 2012 +0100
modules_k/rls: Tidied up the use of (start|end|abort)_transaction
---
modules_k/rls/notify.c | 62 +++++++++++++++++++-------------------- modules_k/rls/resource_notify.c | 3 +- modules_k/rls/rls_db.c | 27 +---------------- 3 files changed, 32 insertions(+), 60 deletions(-)
diff --git a/modules_k/rls/notify.c b/modules_k/rls/notify.c index 1e06d57..a460fa0 100644 --- a/modules_k/rls/notify.c +++ b/modules_k/rls/notify.c @@ -121,6 +121,11 @@ int send_full_notify(subs_t* subs, xmlNodePtr rl_node, str* rl_uri, result_cols[pres_state_col= n_result_cols++]= &str_presence_state_col; result_cols[auth_state_col= n_result_cols++]= &str_auth_state_col; result_cols[reason_col= n_result_cols++]= &str_reason_col; + + update_cols[0]= &str_updated_col; + update_vals[0].type = DB1_INT; + update_vals[0].nul = 0; + update_vals[0].val.int_val= NO_UPDATE_TYPE; if (rlpres_dbf.use_table(rlpres_db, &rlpres_table) < 0) { @@ -143,8 +148,30 @@ int send_full_notify(subs_t* subs, xmlNodePtr rl_node, str* rl_uri, LM_ERR("in sql query\n"); goto error; } - if(result== NULL) + if(result == NULL) + { + LM_ERR("bad result\n"); goto error; + } + + if (result->n > 0) + { + if(rlpres_dbf.update(rlpres_db, query_cols, 0, query_vals, + update_cols, update_vals, 1, 1) < 0) + { + LM_ERR("in sql update\n"); + goto error; + } + } + + if (dbmode == RLS_DB_ONLY && rlpres_dbf.end_transaction) + { + if (rlpres_dbf.end_transaction(rlpres_db) < 0) + { + LM_ERR("in end_transaction\n"); + goto error; + } + }
/* Allocate an initial buffer for the multipart body. * This buffer will be reallocated if neccessary */ @@ -238,9 +265,6 @@ int send_full_notify(subs_t* subs, xmlNodePtr rl_node, str* rl_uri, &rlmi_cont->len, (rls_max_notify_body_len == 0)); xmlFreeDoc(rlmi_body);
- rlpres_dbf.free_result(rlpres_db, result); - result= NULL; - if(agg_body_sendn_update(rl_uri, boundary_string, rlmi_cont, multipart_body, subs, hash_code)< 0) { @@ -248,33 +272,6 @@ int send_full_notify(subs_t* subs, xmlNodePtr rl_node, str* rl_uri, goto error; }
- /* update updated col in rlpres_table*/ - update_cols[0]= &str_updated_col; - update_vals[0].type = DB1_INT; - update_vals[0].nul = 0; - update_vals[0].val.int_val= NO_UPDATE_TYPE; - - if (rlpres_dbf.use_table(rlpres_db, &rlpres_table) < 0) - { - LM_ERR("in use_table\n"); - goto error; - } - if(rlpres_dbf.update(rlpres_db, query_cols, 0, query_vals, update_cols, - update_vals, 1, 1)< 0) - { - LM_ERR("in sql update\n"); - goto error; - } - - if (dbmode == RLS_DB_ONLY && rlpres_dbf.end_transaction) - { - if (rlpres_dbf.end_transaction(rlpres_db) < 0) - { - LM_ERR("in end_transaction\n"); - goto error; - } - } - xmlFree(rlmi_cont->s); pkg_free(rlmi_cont);
@@ -286,7 +283,8 @@ int send_full_notify(subs_t* subs, xmlNodePtr rl_node, str* rl_uri, } multipart_body_size = 0; pkg_free(rlsubs_did.s); - + rlpres_dbf.free_result(rlpres_db, result); + return 0; error: if(rlmi_cont) diff --git a/modules_k/rls/resource_notify.c b/modules_k/rls/resource_notify.c index 310b0af..ba4af35 100644 --- a/modules_k/rls/resource_notify.c +++ b/modules_k/rls/resource_notify.c @@ -1063,10 +1063,9 @@ static void timer_send_update_notifies(int round) LM_ERR("in sql query\n"); goto done; } - if(result== NULL || result->n<= 0) + if(result == NULL || result->n <= 0) goto done;
- /* update the rlpres table */ if(rlpres_dbf.update(rlpres_db, query_cols, 0, query_vals, update_cols, update_vals, 1, 1)< 0) { diff --git a/modules_k/rls/rls_db.c b/modules_k/rls/rls_db.c index cabd164..a4e7327 100644 --- a/modules_k/rls/rls_db.c +++ b/modules_k/rls/rls_db.c @@ -148,15 +148,6 @@ int delete_expired_subs_rlsdb( void ) 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 (rls_dbf.start_transaction) - { - if (rls_dbf.start_transaction(rls_db) < 0) - { - LM_ERR("in start_transaction\n"); - goto error; - } - } - if(rls_dbf.query(rls_db, query_cols, query_ops, query_vals, result_cols, n_query_cols, n_result_cols, 0, &result )< 0) { @@ -221,28 +212,12 @@ int delete_expired_subs_rlsdb( void ) pkg_free(rlsubs_did.s); }
- if (rls_dbf.end_transaction) - { - if (rls_dbf.end_transaction(rls_db) < 0) - { - LM_ERR("in end_transaction\n"); - goto error; - } - } - - if(result) rls_dbf.free_result(rls_db, result); + rls_dbf.free_result(rls_db, result); return 1;
error: if (result) rls_dbf.free_result(rls_db, result); if (rlsubs_did.s) pkg_free(rlsubs_did.s); - - if (rls_dbf.abort_transaction) - { - if (rls_dbf.abort_transaction(rls_db) < 0) - LM_ERR("in abort_transaction\n"); - } - return -1; }