Mercurial > dovecot > core-2.2
changeset 18546:60e48bb43f19
dsync: Stop running if SIGINT/SIGTERM is received.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 08 May 2015 14:47:26 +0300 |
parents | f2a8e1793718 |
children | 6ec2073bbf5c |
files | src/doveadm/doveadm-dsync.c src/doveadm/doveadm-mail.c src/doveadm/doveadm-mail.h |
diffstat | 3 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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,
--- 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) {
--- 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);