#!/usr/bin/perl
use 5.008;
use strict;
use warnings;

my $body_filename = $ARGV[0];
my @command = @ARGV[1 .. $#ARGV];

# read data
my $body_size = -s $body_filename;
$ENV{"CONTENT_LENGTH"} = $body_size;
open(my $body_fh, "<", $body_filename) or die "Cannot open $body_filename: $!";
my $body_data;
defined read($body_fh, $body_data, $body_size) or die "Cannot read $body_filename: $!";
close($body_fh);

my $exited = 0;
$SIG{"CHLD"} = sub {
        $exited = 1;
};

# write data
my $pid = open(my $out, "|-", @command);
{
        # disable buffering at $out
        my $old_selected = select;
        select $out;
        $| = 1;
        select $old_selected;
}
print $out $body_data or die "Cannot write data: $!";

sleep 60; # is interrupted by SIGCHLD
if (!$exited) {
        close($out);
        die "Command did not exit after reading whole body";
}
