Showing 2 changed files with 2 additions and 90 deletions
-89
lib/Gitprep/SmartHTTP.pm
... ...
@@ -2,95 +2,6 @@ package Gitprep::SmartHTTP;
2 2
 
3 3
 use Mojo::Base -base;
4 4
 
5
-use File::Spec::Functions;
6
-use Symbol qw(gensym);
7
-use IPC::Open3;
8
-use IO::Select;
9
-use IO::Uncompress::Gunzip qw($GunzipError);
10
-
11
-use constant BUFFER_SIZE => 8192;
12
-
13 5
 has buffer_size => 8192;
14 6
 
15
-our $VERSION = '0.05';
16
-my @SERVICES = (
17
-  [ 'POST', 'service_rpc', qr{(.*?)/git-upload-pack$},  'upload-pack' ],
18
-  [ 'POST', 'service_rpc', qr{(.*?)/git-receive-pack$}, 'receive-pack' ],
19
-);
20
-
21
-sub service_rpc {
22
-    my $self = shift;
23
-    my $args = shift;
24
-
25
-    my $req = $args->{req};
26
-    my $rpc = $args->{rpc};
27
-
28
-    return $self->return_403
29
-      unless $self->has_access( $req, $rpc, 1 );
30
-
31
-    my @cmd = $self->git_command( $rpc, '--stateless-rpc', '.' );
32
-
33
-    my $input = $req->input;
34
-    if ( exists $req->env->{HTTP_CONTENT_ENCODING}
35
-        && $req->env->{HTTP_CONTENT_ENCODING} =~ /^(?:x-)?gzip$/ )
36
-    {
37
-        $input = IO::Uncompress::Gunzip->new($input);
38
-        unless ($input) {
39
-            $req->env->{'psgi.errors'}->print("gunzip failed: $GunzipError");
40
-            return $self->return_400;
41
-        }
42
-    }
43
-    my ( $cout, $cerr ) = ( gensym, gensym );
44
-    my $pid = open3( my $cin, $cout, $cerr, @cmd );
45
-    my $input_len = 0;
46
-    while ( my $len = $input->read( my $buf, BUFFER_SIZE ) > 0 ) {
47
-        print $cin $buf;
48
-        $input_len += $len;
49
-    }
50
-    close $cin;
51
-    if ( $input_len == 0 ) {
52
-        close $cout;
53
-        close $cerr;
54
-        waitpid( $pid, 0 );
55
-        return $self->return_400;
56
-    }
57
-
58
-    return sub {
59
-        my $respond = shift;
60
-        my $writer  = $respond->(
61
-            [
62
-                200,
63
-                [
64
-                    'Content-Type' =>
65
-                      sprintf( 'application/x-git-%s-result', $rpc ),
66
-                ]
67
-            ]
68
-        );
69
-
70
-        my ( $out, $err, $buf ) = ( '', '', '' );
71
-        my $s = IO::Select->new( $cout, $cerr );
72
-        while ( my @ready = $s->can_read ) {
73
-            for my $handle (@ready) {
74
-                while ( sysread( $handle, $buf, BUFFER_SIZE ) ) {
75
-                    if ( $handle == $cerr ) {
76
-                        $err .= $buf;
77
-                    }
78
-                    else {
79
-                        $writer->write($buf);
80
-                    }
81
-                }
82
-                $s->remove($handle) if eof($handle);
83
-            }
84
-        }
85
-        close $cout;
86
-        close $cerr;
87
-        waitpid( $pid, 0 );
88
-
89
-        if ($err) {
90
-            $req->env->{'psgi.errors'}->print("git command failed: $err");
91
-        }
92
-        $writer->close();
93
-      }
94
-}
95
-
96 7
 1;
+2 -1
templates/smart-http/info-refs.html.ep
... ...
@@ -1,6 +1,7 @@
1 1
 <%
2 2
   use IPC::Open3 ();;
3 3
   use Symbol ();
4
+  use IO::Select ();
4 5
 
5 6
   my $service = param('service') || '';
6 7
   my $user = param('user');
... ...
@@ -18,7 +19,7 @@
18 19
     my $pid = IPC::Open3::open3(my $cin, $cout, $cerr, @cmd );
19 20
     close $cin;
20 21
     my ( $refs, $err, $buf ) = ( '', '', '' );
21
-    my $s = IO::Select->new( $cout, $cerr );
22
+    my $s = IO::Select->new($cout, $cerr);
22 23
     my $buffer_size = $sh->buffer_size;
23 24
     while (my @ready = $s->can_read) {
24 25
       for my $handle (@ready) {