From 945a8ac2128dadae919a6ef3d939b7bc83589551 Mon Sep 17 00:00:00 2001 From: iliajie Date: Mon, 27 Jun 2022 00:04:31 +0300 Subject: [PATCH] Fix to revert Dovecot start/stop commands to use init --- dovecot/dovecot-lib.pl | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/dovecot/dovecot-lib.pl b/dovecot/dovecot-lib.pl index 56fb0d09d..c10486f4e 100755 --- a/dovecot/dovecot-lib.pl +++ b/dovecot/dovecot-lib.pl @@ -434,9 +434,20 @@ return undef; # undef if successful sub stop_dovecot { -&foreign_require("init"); -my ($ok, $err) = &init::stop_action($config{'init_script'} || 'dovecot'); -return $ok ? undef : "
$err
"; +local $script = &get_initscript(); +if ($script) { + local $out = &backquote_logged("$script stop 2>&1 $out" : undef; + } +else { + local $pid = &is_dovecot_running(); + if ($pid && kill('TERM', $pid)) { + return undef; + } + else { + return $text{'stop_erunning'}; + } + } } # start_dovecot() @@ -444,9 +455,14 @@ return $ok ? undef : "
$err
"; # undef if successful sub start_dovecot { -&foreign_require("init"); -my ($ok, $err) = &init::start_action($config{'init_script'} || 'dovecot'); -return $ok ? undef : "
$err
"; +local $script = &get_initscript(); +local $cmd = $script ? "$script start" : $config{'dovecot'}; +local $temp = &transname(); +&system_logged("$cmd >$temp 2>&1 $out"; } # apply_configration([full-restart]) @@ -460,9 +476,14 @@ if (!$pid) { } elsif ($restart) { # Fully shut down and re-start - &foreign_require("init"); - my ($ok, $err) = &init::restart_action($config{'init_script'} || 'dovecot'); - return $ok ? undef : "
$err
"; + &stop_dovecot(); + local $err; + for(my $i=0; $i<5; $i++) { + $err = &start_dovecot(); + last if (!$err); + sleep(1); + } + return $err; } else { # Send the HUP signal