dovecot-2.2: dsync: Stop running if SIGINT/SIGTERM is received.
dovecot at dovecot.org
dovecot at dovecot.org
Fri May 8 11:49:15 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/60e48bb43f19
changeset: 18546:60e48bb43f19
user: Timo Sirainen <tss at iki.fi>
date: Fri May 08 14:47:26 2015 +0300
description:
dsync: Stop running if SIGINT/SIGTERM is received.
diffstat:
src/doveadm/doveadm-dsync.c | 7 +++++--
src/doveadm/doveadm-mail.c | 5 +++++
src/doveadm/doveadm-mail.h | 2 ++
3 files changed, 12 insertions(+), 2 deletions(-)
diffs (51 lines):
diff -r f2a8e1793718 -r 60e48bb43f19 src/doveadm/doveadm-dsync.c
--- a/src/doveadm/doveadm-dsync.c Fri May 08 10:44:18 2015 +0300
+++ b/src/doveadm/doveadm-dsync.c Fri May 08 14:47:26 2015 +0300
@@ -383,7 +383,8 @@
changed1 = changed2 = TRUE;
while (brain1_running || brain2_running) {
if (dsync_brain_has_failed(brain) ||
- dsync_brain_has_failed(brain2))
+ dsync_brain_has_failed(brain2) ||
+ doveadm_is_killed())
break;
i_assert(changed1 || changed2);
@@ -391,7 +392,9 @@
brain2_running = dsync_brain_run(brain2, &changed2);
}
*changes_during_sync_r = dsync_brain_has_unexpected_changes(brain2);
- return dsync_brain_deinit(&brain2, mail_error_r);
+ if (dsync_brain_deinit(&brain2, mail_error_r) < 0)
+ return -1;
+ return doveadm_is_killed() ? -1 : 0;
}
static void cmd_dsync_wait_remote(struct dsync_cmd_context *ctx,
diff -r f2a8e1793718 -r 60e48bb43f19 src/doveadm/doveadm-mail.c
--- a/src/doveadm/doveadm-mail.c Fri May 08 10:44:18 2015 +0300
+++ b/src/doveadm/doveadm-mail.c Fri May 08 14:47:26 2015 +0300
@@ -40,6 +40,11 @@
static int killed_signo = 0;
+bool doveadm_is_killed(void)
+{
+ return killed_signo != 0;
+}
+
void doveadm_mail_failed_error(struct doveadm_mail_cmd_context *ctx,
enum mail_error error)
{
diff -r f2a8e1793718 -r 60e48bb43f19 src/doveadm/doveadm-mail.h
--- a/src/doveadm/doveadm-mail.h Fri May 08 10:44:18 2015 +0300
+++ b/src/doveadm/doveadm-mail.h Fri May 08 14:47:26 2015 +0300
@@ -111,6 +111,8 @@
extern struct doveadm_mail_cmd_module_register doveadm_mail_cmd_module_register;
extern char doveadm_mail_cmd_hide;
+bool doveadm_is_killed(void);
+
bool doveadm_mail_try_run(const char *cmd_name, int argc, char *argv[]);
void doveadm_mail_register_cmd(const struct doveadm_mail_cmd *cmd);
const struct doveadm_mail_cmd *doveadm_mail_cmd_find(const char *cmd_name);
More information about the dovecot-cvs
mailing list