[pve-devel] [PATCH common 1/2] fork_worker: refactor child exit

Stoiko Ivanov s.ivanov at proxmox.com
Tue Nov 20 09:46:31 CET 2018


* 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 <s.ivanov at proxmox.com>
---
 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.11.0





More information about the pve-devel mailing list