... | ... |
@@ -42,21 +42,24 @@ |
42 | 42 |
$cb = sub { |
43 | 43 |
my $c = shift; |
44 | 44 |
if (@ready = $s->can_read) { |
45 |
+ $output = ''; |
|
45 | 46 |
for my $handle (@ready) { |
46 | 47 |
|
47 | 48 |
if (sysread($handle, my $buf, $buffer_size)) { |
49 |
+ #warn `ps axuww|grep gitprep` if $k % 3000 == 0; |
|
50 |
+ |
|
48 | 51 |
if ($handle == $cerr) { |
49 |
- $error .= $buf if defined $buf; |
|
52 |
+ $error .= $buf; |
|
50 | 53 |
} |
51 | 54 |
else { |
52 |
- $output .= $buf if defined $buf; |
|
55 |
+ $output .= $buf; |
|
53 | 56 |
} |
54 | 57 |
} |
55 | 58 |
else { |
56 | 59 |
$s->remove($handle); |
57 | 60 |
} |
58 | 61 |
} |
59 |
- $c->write_chunk($output, $cb) if defined $output; |
|
62 |
+ $c->write_chunk($output, $cb); |
|
60 | 63 |
} |
61 | 64 |
else { |
62 | 65 |
$c->finish; |
... | ... |
@@ -89,6 +89,25 @@ note 'Smart HTTP'; |
89 | 89 |
$t->content_like(qr/^001e# service=git-upload-pack/); |
90 | 90 |
$t->content_like(qr/multi_ack_detailed/); |
91 | 91 |
|
92 |
+ # /git-upload-pack |
|
93 |
+ { |
|
94 |
+ my $content = <<EOS; |
|
95 |
+006fwant 6410316f2ed260666a8a6b9a223ad3c95d7abaed multi_ack_detailed no-done side-band-64k thin-pack ofs-delta |
|
96 |
+0032want 6410316f2ed260666a8a6b9a223ad3c95d7abaed |
|
97 |
+00000009done |
|
98 |
+EOS |
|
99 |
+ $t->post_ok( |
|
100 |
+ '/kimoto/t1.git/git-upload-pack', |
|
101 |
+ { |
|
102 |
+ 'Content-Type' => 'application/x-git-upload-pack-request', |
|
103 |
+ 'Content-Length' => 174, |
|
104 |
+ 'Content' => $content |
|
105 |
+ } |
|
106 |
+ ); |
|
107 |
+ $t->status_is(200); |
|
108 |
+ $t->content_type_is('application/x-git-upload-pack-result'); |
|
109 |
+ } |
|
110 |
+ |
|
92 | 111 |
# /info/refs recieve-pack request(Basic authentication) |
93 | 112 |
$t->get_ok('/kimoto/t1.git/info/refs?service=git-receive-pack'); |
94 | 113 |
$t->status_is(401); |
... | ... |
@@ -116,26 +135,6 @@ note 'Smart HTTP'; |
116 | 135 |
); |
117 | 136 |
$t->status_is(200); |
118 | 137 |
$t->content_type_is('application/x-git-receive-pack-result'); |
119 |
- |
|
120 |
- # /git-upload-pack |
|
121 |
- { |
|
122 |
- $main::ppp = 1; |
|
123 |
- my $content = <<EOS; |
|
124 |
-006fwant 6410316f2ed260666a8a6b9a223ad3c95d7abaed multi_ack_detailed no-done side-band-64k thin-pack ofs-delta |
|
125 |
-0032want 6410316f2ed260666a8a6b9a223ad3c95d7abaed |
|
126 |
-00000009done |
|
127 |
-EOS |
|
128 |
- $t->post_ok( |
|
129 |
- '/kimoto/t1.git/git-upload-pack', |
|
130 |
- { |
|
131 |
- 'Content-Type' => 'application/x-git-upload-pack-request', |
|
132 |
- 'Content-Length' => 174, |
|
133 |
- 'Content' => $content |
|
134 |
- } |
|
135 |
- ); |
|
136 |
- $t->status_is(200); |
|
137 |
- $t->content_type_is('application/x-git-upload-pack-result'); |
|
138 |
- } |
|
139 | 138 |
} |
140 | 139 |
|
141 | 140 |
note 'Private repository and collaborator'; |