From edbb302ec89d0a32b2cbb4f000f910f66d5e8dfc Mon Sep 17 00:00:00 2001 From: Stoiko Ivanov Date: Tue, 20 Nov 2018 09:46:31 +0100 Subject: [PATCH] fork_worker: refactor child exit * factor out duplicated code. * drop final kill(-9, $$), since the POSIX:_exit call does not return (see man 2 _exit). Signed-off-by: Stoiko Ivanov --- src/PVE/RESTEnvironment.pm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/PVE/RESTEnvironment.pm b/src/PVE/RESTEnvironment.pm index 69af004..c2fea2b 100644 --- a/src/PVE/RESTEnvironment.pm +++ b/src/PVE/RESTEnvironment.pm @@ -579,22 +579,21 @@ sub fork_worker { } &$function($upid); }; + my ($msg, $exitcode); my $err = $@; if ($err) { chomp $err; $err =~ s/\n/ /mg; syslog('err', $err); - my $msg = "TASK ERROR: $err\n"; - POSIX::write($resfh, $msg, length($msg)); - POSIX::close($resfh) if $sync; - POSIX::_exit(-1); + $msg = "TASK ERROR: $err\n"; + $exitcode = -1; } else { - my $msg = "TASK OK\n"; - POSIX::write($resfh, $msg, length($msg)); - POSIX::close($resfh) if $sync; - POSIX::_exit(0); + $msg = "TASK OK\n"; + $exitcode = 0; } - kill(-9, $$); + POSIX::write($resfh, $msg, length($msg)); + POSIX::close($resfh) if $sync; + POSIX::_exit($exitcode); } # parent -- 2.39.2