From f93cd087e460b1196322b1e8a28612fb426f1072 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 29 Feb 2016 01:34:33 +0000 Subject: git-http-backend: fixes for mod_perl Apache2 mod_perl does not give us a real file handle, so we must translate that before giving that to git-http-backend(1). Also, parse the Status: correctly for errors since we failed to set %ENV properly before the previous fix for SpawnPP --- lib/PublicInbox/GitHTTPBackend.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/PublicInbox/GitHTTPBackend.pm') diff --git a/lib/PublicInbox/GitHTTPBackend.pm b/lib/PublicInbox/GitHTTPBackend.pm index 8e6d8b64..56bf24f4 100644 --- a/lib/PublicInbox/GitHTTPBackend.pm +++ b/lib/PublicInbox/GitHTTPBackend.pm @@ -132,9 +132,10 @@ sub serve_smart { my $buf; my $in; my $err = $env->{'psgi.errors'}; - if (fileno($input) >= 0) { + my $fd = eval { fileno($input) }; + if (defined $fd && $fd >= 0) { $in = $input; - } else { # FIXME untested + } else { $in = input_to_file($env) or return r(500); } my ($rpipe, $wpipe); @@ -208,7 +209,7 @@ sub serve_smart { foreach my $l (split(/\r\n/, $h)) { my ($k, $v) = split(/:\s*/, $l, 2); if ($k =~ /\AStatus\z/i) { - $code = int($v); + ($code) = ($v =~ /\b(\d+)\b/); } else { push @h, $k, $v; } @@ -233,7 +234,6 @@ sub serve_smart { } } -# FIXME: untested, our -httpd _always_ gives a real file handle sub input_to_file { my ($env) = @_; my $in = IO::File->new_tmpfile; -- cgit v1.2.3-24-ge0c7