ports/mail/dbmail/files/patch-0026-Rebalance-commit-rollback
Muhammad Moinur Rahman 9eff14e488 mail/dbmail: adopt latest fixes from git:
- login_disabled option before starttls for pop3
- fix compiler warnings for GCC5
- Fix IMAP mailbox maintanence
- prevent assertion in p_string_erase
- improve crypt authentication, also don't segfault when spasswd is empty
- simplify log_query_time duration logic
- Disconnect IMAP clients if only few free FDs left
- Add primary key constraint to dbmail_authlog
- Rework temporary connection failures
- Give sensible default for retry 120s
- Add retries for binding and searching
- Bump search timeout to 60s
- Increase ldap timeout to 600s 10 mins
- Refactor deprecated functions
- Get timeout from config
- Remove redundant event_assign
- Remove deprecated non functioning g_mem_profile
- Add definition for authldap_free
- Revert inadvertent event_assign removal
- Reduce failed LDAP connection for search to error
- Update LDAP to non deprecated search
- Clear the ldap connection
- Update ldap deprecated unbind
- Fix typo
- Update to ldap_unbind_ext_s and remove redundant sigaction
- Rebalance commit rollback
- Ensure mailbox2dbmail is using Python 2
- Tidy mailbox2dbmail man page
- Update description of pid file location in server man page
- Boundaries fixups ordering of parts do not add newline on
- Prepend headers during delivery
- Allow for systems that don't use proc

PR:		210274
Submitted by:	fluffy
2017-02-24 21:15:52 +00:00

71 lines
1.8 KiB
Text

From 1a09a645c82e07fee8d42642a83652c6c85473ff Mon Sep 17 00:00:00 2001
From: Alan Hicks <ahicks@p-o.co.uk>
Date: Mon, 31 Oct 2016 18:27:45 +0000
Subject: [PATCH 26/33] Rebalance commit/rollback
---
src/dm_mailboxstate.c | 9 ++++++---
src/imapcommands.c | 1 +
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git src/dm_mailboxstate.c src/dm_mailboxstate.c
index 723689a..c04b6d7 100644
--- src/dm_mailboxstate.c
+++ src/dm_mailboxstate.c
@@ -212,11 +212,12 @@ T MailboxState_new(Mempool_T pool, uint64_t id)
db_begin_transaction(c); // we need read-committed isolation
state_load_metadata(M, c);
state_load_messages(M, c);
+ db_commit_transaction(c);
CATCH(SQLException)
LOG_SQLERROR;
+ db_rollback_transaction(c);
t = DM_EQUERY;
FINALLY
- db_commit_transaction(c);
db_con_close(c);
END_TRY;
@@ -888,11 +889,12 @@ int MailboxState_info(T M)
TRY
db_begin_transaction(c);
db_getmailbox_info(M, c);
+ db_commit_transaction(c);
CATCH(SQLException)
LOG_SQLERROR;
+ db_rollback_transaction(c);
t = DM_EQUERY;
FINALLY
- db_commit_transaction(c);
db_con_close(c);
END_TRY;
@@ -928,11 +930,12 @@ int MailboxState_count(T M)
TRY
db_begin_transaction(c);
db_getmailbox_count(M, c);
+ db_commit_transaction(c);
CATCH(SQLException)
LOG_SQLERROR;
+ db_rollback_transaction(c);
t = DM_EQUERY;
FINALLY
- db_commit_transaction(c);
db_con_close(c);
END_TRY;
diff --git src/imapcommands.c src/imapcommands.c
index bdedb4a..43760fc 100644
--- src/imapcommands.c
+++ src/imapcommands.c
@@ -946,6 +946,7 @@ void _ic_delete_enter(dm_thread_data *D)
db_commit_transaction(c);
CATCH(SQLException)
LOG_SQLERROR;
+ db_rollback_transaction(c);
t = DM_EQUERY;
FINALLY
db_con_close(c);
--
2.10.1 (Apple Git-78)