From: Andrey Volk Date: Thu, 23 Jan 2020 22:19:46 +0000 (+0400) Subject: [mod_pgsql] Fix autocommit not flipping back to on when a transaction ends in mod_pgs... X-Git-Tag: v1.10.3^2~241 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d650f4f694d0f0f51bde285796a7f43059f7119;p=thirdparty%2Ffreeswitch.git [mod_pgsql] Fix autocommit not flipping back to on when a transaction ends in mod_pgsql causing switch_cache_db_test_reactive() to fail. --- diff --git a/src/mod/databases/mod_pgsql/mod_pgsql.c b/src/mod/databases/mod_pgsql/mod_pgsql.c index 77ac42f094..b69d54f497 100644 --- a/src/mod/databases/mod_pgsql/mod_pgsql.c +++ b/src/mod/databases/mod_pgsql/mod_pgsql.c @@ -853,8 +853,8 @@ switch_status_t database_commit(switch_database_interface_handle_t *dih) return SWITCH_STATUS_FALSE; result = pgsql_SQLEndTran(handle, SWITCH_TRUE); - result = result && pgsql_SQLSetAutoCommitAttr(dih, SWITCH_TRUE); - result = result && pgsql_finish_results(handle); + result = pgsql_SQLSetAutoCommitAttr(dih, SWITCH_TRUE) && result; + result = pgsql_finish_results(handle) && result; return result; } @@ -862,6 +862,7 @@ switch_status_t database_commit(switch_database_interface_handle_t *dih) switch_status_t database_rollback(switch_database_interface_handle_t *dih) { switch_pgsql_handle_t *handle; + switch_status_t result; if (!dih) { return SWITCH_STATUS_FALSE; @@ -872,10 +873,11 @@ switch_status_t database_rollback(switch_database_interface_handle_t *dih) if (!handle) return SWITCH_STATUS_FALSE; - pgsql_SQLEndTran(handle, SWITCH_FALSE); - // Is that enought? + result = pgsql_SQLEndTran(handle, SWITCH_FALSE); + result = pgsql_SQLSetAutoCommitAttr(dih, SWITCH_TRUE) && result; + result = pgsql_finish_results(handle) && result; - return SWITCH_STATUS_SUCCESS; + return result; } switch_status_t pgsql_handle_callback_exec_detailed(const char *file, const char *func, int line,