changeset 19661:166d2d3f57f8

doveadm: Enable SIGINT and SIGTERM signal handler for all doveadm mail commands. Most importantly this allows stopping dsync.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 28 Jan 2016 16:59:48 +0200
parents 7a3a138a4986
children a1e05123f776
files src/doveadm/doveadm-mail.c
diffstat 1 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail.c	Thu Jan 28 16:43:37 2016 +0200
+++ b/src/doveadm/doveadm-mail.c	Thu Jan 28 16:59:48 2016 +0200
@@ -390,6 +390,11 @@
 	return 1;
 }
 
+static void sig_die(const siginfo_t *si, void *context ATTR_UNUSED)
+{
+	killed_signo = si->si_signo;
+}
+
 int doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
 			     const struct mail_storage_service_input *input,
 			     const char **error_r)
@@ -405,12 +410,10 @@
 	if (hook_doveadm_mail_init != NULL)
 		hook_doveadm_mail_init(ctx);
 
-	return doveadm_mail_next_user(ctx, input, error_r);
-}
+	lib_signals_set_handler(SIGINT, 0, sig_die, NULL);
+	lib_signals_set_handler(SIGTERM, 0, sig_die, NULL);
 
-static void sig_die(const siginfo_t *si, void *context ATTR_UNUSED)
-{
-	killed_signo = si->si_signo;
+	return doveadm_mail_next_user(ctx, input, error_r);
 }
 
 static void