diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/OpenSLX/Basics.pm | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/OpenSLX/Basics.pm b/lib/OpenSLX/Basics.pm index e723c431..937c99c7 100644 --- a/lib/OpenSLX/Basics.pm +++ b/lib/OpenSLX/Basics.pm @@ -355,10 +355,16 @@ sub slxsystem { vlog 2, _tr("executing: %s", join ' ', @_); my $res = system(@_); - if ($res > 0 && $res & 127) { - # child got killed, so we stop, too - die _tr("child-process reveived signal '%s', parent stops!", $res & 127); - exit; + if ($res > 0) { + # check if child got killed, if so we stop, too (unless the signal is + # SIGPIPE, which we ignore in order to loop over failed FTP connections + # and the like): + my $signalNo = $res & 127; + if ($signalNo > 0 && $signalNo != 13) { + die _tr("child-process reveived signal '%s', parent stops!", + $signalNo); + exit; + } } return $res; } |