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