rainbows 0.95.1 → 0.96.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Documentation/comparison.haml +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +2 -1
- data/Rakefile +16 -3
- data/Static_Files +11 -11
- data/TODO +1 -6
- data/lib/rainbows.rb +3 -2
- data/lib/rainbows/base.rb +12 -9
- data/lib/rainbows/const.rb +2 -4
- data/lib/rainbows/dev_fd_response.rb +16 -13
- data/lib/rainbows/error.rb +2 -0
- data/lib/rainbows/ev_core.rb +13 -0
- data/lib/rainbows/event_machine.rb +85 -128
- data/lib/rainbows/event_machine/response_chunk_pipe.rb +25 -0
- data/lib/rainbows/event_machine/response_pipe.rb +30 -0
- data/lib/rainbows/event_machine/try_defer.rb +27 -0
- data/lib/rainbows/fiber/body.rb +6 -4
- data/lib/rainbows/fiber/io.rb +4 -4
- data/lib/rainbows/fiber/rev.rb +16 -8
- data/lib/rainbows/http_response.rb +5 -6
- data/lib/rainbows/response.rb +37 -22
- data/lib/rainbows/response/body.rb +19 -16
- data/lib/rainbows/response/range.rb +34 -0
- data/lib/rainbows/rev.rb +2 -1
- data/lib/rainbows/rev/client.rb +105 -77
- data/lib/rainbows/rev/deferred_chunk_response.rb +16 -0
- data/lib/rainbows/rev/deferred_response.rb +16 -24
- data/lib/rainbows/rev/sendfile.rb +4 -13
- data/lib/rainbows/rev/thread.rb +3 -12
- data/lib/rainbows/rev_thread_pool.rb +2 -2
- data/lib/rainbows/revactor.rb +16 -9
- data/lib/rainbows/revactor/body.rb +42 -0
- data/lib/rainbows/revactor/proxy.rb +55 -0
- data/lib/rainbows/sendfile.rb +12 -14
- data/lib/rainbows/stream_file.rb +3 -3
- data/lib/rainbows/writer_thread_pool.rb +12 -12
- data/lib/rainbows/writer_thread_spawn.rb +6 -7
- data/t/GNUmakefile +2 -2
- data/t/close-pipe-response.ru +25 -0
- data/t/cramp/rainsocket.ru +1 -1
- data/t/fast-pipe-response.ru +10 -0
- data/t/file-wrap-to_path.ru +24 -0
- data/t/t0015-working_directory.sh +5 -1
- data/t/t0020-large-sendfile-response.sh +3 -3
- data/t/t0021-sendfile-wrap-to_path.sh +108 -0
- data/t/t0022-copy_stream-byte-range.sh +139 -0
- data/t/t0023-sendfile-byte-range.sh +63 -0
- data/t/t0024-pipelined-sendfile-response.sh +89 -0
- data/t/t0030-fast-pipe-response.sh +63 -0
- data/t/t0031-close-pipe-response.sh +96 -0
- data/t/t0034-pipelined-pipe-response.sh +87 -0
- data/t/t0105-rack-input-limit-bigger.sh +5 -2
- data/t/t0500-cramp-streaming.sh +0 -1
- data/t/t0501-cramp-rainsocket.sh +1 -0
- data/t/t9000-rack-app-pool.sh +1 -1
- data/t/test_isolate.rb +1 -0
- metadata +29 -5
@@ -0,0 +1,89 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
. ./test-lib.sh
|
3
|
+
|
4
|
+
t_plan 6 "pipelined sendfile response for $model"
|
5
|
+
|
6
|
+
t_begin "setup and startup" && {
|
7
|
+
rtmpfiles err out dd_fifo
|
8
|
+
rainbows_setup $model
|
9
|
+
echo 'require "sendfile"' >> $unicorn_config
|
10
|
+
echo 'def (::IO).copy_stream(*x); abort "NO"; end' >> $unicorn_config
|
11
|
+
|
12
|
+
# can't load Rack::Lint here since it clobbers body#to_path
|
13
|
+
rainbows -E none -D large-file-response.ru -c $unicorn_config
|
14
|
+
rainbows_wait_start
|
15
|
+
}
|
16
|
+
|
17
|
+
t_begin "read random blob sha1" && {
|
18
|
+
random_blob_sha1=$(rsha1 < random_blob)
|
19
|
+
}
|
20
|
+
|
21
|
+
script='
|
22
|
+
require "digest/sha1"
|
23
|
+
require "kcar"
|
24
|
+
$stdin.binmode
|
25
|
+
expect = ENV["random_blob_sha1"]
|
26
|
+
kcar = Kcar::Response.new($stdin, {})
|
27
|
+
3.times do
|
28
|
+
nr = 0
|
29
|
+
status, headers, body = kcar.rack
|
30
|
+
dig = Digest::SHA1.new
|
31
|
+
body.each { |buf| dig << buf ; nr += buf.size }
|
32
|
+
sha1 = dig.hexdigest
|
33
|
+
sha1 == expect or abort "mismatch: sha1=#{sha1} != expect=#{expect}"
|
34
|
+
body.close
|
35
|
+
end
|
36
|
+
$stdout.syswrite("ok\n")
|
37
|
+
'
|
38
|
+
|
39
|
+
t_begin "staggered pipeline of 3 HTTP requests" && {
|
40
|
+
req='GET /random_blob HTTP/1.1\r\nHost: example.com\r\n'
|
41
|
+
rm -f $ok
|
42
|
+
(
|
43
|
+
export random_blob_sha1
|
44
|
+
$RUBY -e "$script" < $fifo >> $ok &
|
45
|
+
printf "$req"'X-Req:0\r\n\r\n'
|
46
|
+
exec 6>&1
|
47
|
+
(
|
48
|
+
dd bs=16384 count=1
|
49
|
+
printf "$req" >&6
|
50
|
+
dd bs=16384 count=1
|
51
|
+
printf 'X-Req:1\r\n\r\n' >&6
|
52
|
+
dd bs=16384 count=1
|
53
|
+
printf "$req" >&6
|
54
|
+
dd bs=16384 count=1
|
55
|
+
printf 'X-Req:2\r\n' >&6
|
56
|
+
dd bs=16384 count=1
|
57
|
+
printf 'Connection: close\r\n\r' >&6
|
58
|
+
dd bs=16384 count=1
|
59
|
+
printf '\n' >&6
|
60
|
+
cat
|
61
|
+
) < $dd_fifo > $fifo &
|
62
|
+
wait
|
63
|
+
echo ok >> $ok
|
64
|
+
) | socat - TCP:$listen > $dd_fifo
|
65
|
+
test 2 -eq $(grep '^ok$' $ok |wc -l)
|
66
|
+
}
|
67
|
+
|
68
|
+
t_begin "pipeline 3 HTTP requests" && {
|
69
|
+
rm -f $ok
|
70
|
+
req='GET /random_blob HTTP/1.1\r\nHost: example.com\r\n'
|
71
|
+
req="$req"'\r\n'"$req"'\r\n'"$req"
|
72
|
+
req="$req"'Connection: close\r\n\r\n'
|
73
|
+
(
|
74
|
+
export random_blob_sha1
|
75
|
+
$RUBY -e "$script" < $fifo >> $ok &
|
76
|
+
printf "$req"
|
77
|
+
wait
|
78
|
+
echo ok >> $ok
|
79
|
+
) | socat - TCP:$listen > $fifo
|
80
|
+
test 2 -eq $(grep '^ok$' $ok |wc -l)
|
81
|
+
}
|
82
|
+
|
83
|
+
t_begin "shutdown server" && {
|
84
|
+
kill -QUIT $rainbows_pid
|
85
|
+
}
|
86
|
+
|
87
|
+
t_begin "check stderr" && check_stderr
|
88
|
+
|
89
|
+
t_done
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
. ./test-lib.sh
|
3
|
+
test -r random_blob || die "random_blob required, run with 'make $0'"
|
4
|
+
|
5
|
+
t_plan 10 "fast pipe response for $model"
|
6
|
+
|
7
|
+
t_begin "setup and startup" && {
|
8
|
+
rtmpfiles err out
|
9
|
+
rainbows_setup $model
|
10
|
+
rainbows -E none -D fast-pipe-response.ru -c $unicorn_config
|
11
|
+
rainbows_wait_start
|
12
|
+
}
|
13
|
+
|
14
|
+
t_begin "read random blob sha1" && {
|
15
|
+
random_blob_sha1=$(rsha1 < random_blob)
|
16
|
+
three_sha1=$(cat random_blob random_blob random_blob | rsha1)
|
17
|
+
}
|
18
|
+
|
19
|
+
t_begin "single request matches" && {
|
20
|
+
sha1=$(curl -sSfv 2> $err http://$listen/ | rsha1)
|
21
|
+
test -n "$sha1"
|
22
|
+
test x"$sha1" = x"$random_blob_sha1"
|
23
|
+
}
|
24
|
+
|
25
|
+
t_begin "Content-Length header preserved in response" && {
|
26
|
+
grep "^< Content-Length:" $err
|
27
|
+
}
|
28
|
+
|
29
|
+
t_begin "send three keep-alive requests" && {
|
30
|
+
sha1=$(curl -vsSf 2> $err \
|
31
|
+
http://$listen/ http://$listen/ http://$listen/ | rsha1)
|
32
|
+
test -n "$sha1"
|
33
|
+
test x"$sha1" = x"$three_sha1"
|
34
|
+
}
|
35
|
+
|
36
|
+
t_begin "ensure responses were all keep-alive" && {
|
37
|
+
test 3 -eq $(grep '< Connection: keep-alive' < $err | wc -l)
|
38
|
+
}
|
39
|
+
|
40
|
+
t_begin "HTTP/1.0 test" && {
|
41
|
+
sha1=$(curl -0 -v 2> $err -sSf http://$listen/ | rsha1)
|
42
|
+
test $sha1 = $random_blob_sha1
|
43
|
+
grep '< Connection: close' < $err
|
44
|
+
}
|
45
|
+
|
46
|
+
t_begin "HTTP/0.9 test" && {
|
47
|
+
(
|
48
|
+
printf 'GET /\r\n'
|
49
|
+
rsha1 < $fifo > $tmp &
|
50
|
+
wait
|
51
|
+
echo ok > $ok
|
52
|
+
) | socat - TCP:$listen > $fifo
|
53
|
+
test $(cat $tmp) = $random_blob_sha1
|
54
|
+
test xok = x$(cat $ok)
|
55
|
+
}
|
56
|
+
|
57
|
+
t_begin "shutdown server" && {
|
58
|
+
kill -QUIT $rainbows_pid
|
59
|
+
}
|
60
|
+
|
61
|
+
t_begin "check stderr" && check_stderr
|
62
|
+
|
63
|
+
t_done
|
@@ -0,0 +1,96 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
. ./test-lib.sh
|
3
|
+
|
4
|
+
t_plan 16 "close pipe response for $model"
|
5
|
+
|
6
|
+
t_begin "setup and startup" && {
|
7
|
+
rtmpfiles err out http_fifo sub_ok
|
8
|
+
rainbows_setup $model
|
9
|
+
export fifo
|
10
|
+
rainbows -E none -D close-pipe-response.ru -c $unicorn_config
|
11
|
+
rainbows_wait_start
|
12
|
+
}
|
13
|
+
|
14
|
+
t_begin "read random blob sha1" && {
|
15
|
+
random_blob_sha1=$(rsha1 < random_blob)
|
16
|
+
}
|
17
|
+
|
18
|
+
t_begin "start FIFO reader" && {
|
19
|
+
cat $fifo > $out &
|
20
|
+
}
|
21
|
+
|
22
|
+
t_begin "single request matches" && {
|
23
|
+
sha1=$(curl -sSfv 2> $err http://$listen/ | rsha1)
|
24
|
+
test -n "$sha1"
|
25
|
+
test x"$sha1" = x"$random_blob_sha1"
|
26
|
+
}
|
27
|
+
|
28
|
+
t_begin "body.close called" && {
|
29
|
+
wait # for cat $fifo
|
30
|
+
grep CLOSING $out || die "body.close not logged"
|
31
|
+
}
|
32
|
+
|
33
|
+
t_begin "start FIFO reader for abortive HTTP/1.1 request" && {
|
34
|
+
cat $fifo > $out &
|
35
|
+
}
|
36
|
+
|
37
|
+
t_begin "send abortive HTTP/1.1 request" && {
|
38
|
+
rm -f $ok
|
39
|
+
(
|
40
|
+
printf 'GET /random_blob HTTP/1.1\r\nHost: example.com\r\n\r\n'
|
41
|
+
dd bs=4096 count=1 < $http_fifo >/dev/null
|
42
|
+
echo ok > $ok
|
43
|
+
) | socat - TCP:$listen > $http_fifo || :
|
44
|
+
test xok = x$(cat $ok)
|
45
|
+
}
|
46
|
+
|
47
|
+
t_begin "body.close called for aborted HTTP/1.1 request" && {
|
48
|
+
wait # for cat $fifo
|
49
|
+
grep CLOSING $out || die "body.close not logged"
|
50
|
+
}
|
51
|
+
|
52
|
+
t_begin "start FIFO reader for abortive HTTP/1.0 request" && {
|
53
|
+
cat $fifo > $out &
|
54
|
+
}
|
55
|
+
|
56
|
+
t_begin "send abortive HTTP/1.0 request" && {
|
57
|
+
rm -f $ok
|
58
|
+
(
|
59
|
+
printf 'GET /random_blob HTTP/1.0\r\n\r\n'
|
60
|
+
dd bs=4096 count=1 < $http_fifo >/dev/null
|
61
|
+
echo ok > $ok
|
62
|
+
) | socat - TCP:$listen > $http_fifo || :
|
63
|
+
test xok = x$(cat $ok)
|
64
|
+
}
|
65
|
+
|
66
|
+
t_begin "body.close called for aborted HTTP/1.0 request" && {
|
67
|
+
wait # for cat $fifo
|
68
|
+
grep CLOSING $out || die "body.close not logged"
|
69
|
+
}
|
70
|
+
|
71
|
+
t_begin "start FIFO reader for abortive HTTP/0.9 request" && {
|
72
|
+
cat $fifo > $out &
|
73
|
+
}
|
74
|
+
|
75
|
+
t_begin "send abortive HTTP/0.9 request" && {
|
76
|
+
rm -f $ok
|
77
|
+
(
|
78
|
+
printf 'GET /random_blob\r\n'
|
79
|
+
dd bs=4096 count=1 < $http_fifo >/dev/null
|
80
|
+
echo ok > $ok
|
81
|
+
) | socat - TCP:$listen > $http_fifo || :
|
82
|
+
test xok = x$(cat $ok)
|
83
|
+
}
|
84
|
+
|
85
|
+
t_begin "body.close called for aborted HTTP/0.9 request" && {
|
86
|
+
wait # for cat $fifo
|
87
|
+
grep CLOSING $out || die "body.close not logged"
|
88
|
+
}
|
89
|
+
|
90
|
+
t_begin "shutdown server" && {
|
91
|
+
kill -QUIT $rainbows_pid
|
92
|
+
}
|
93
|
+
|
94
|
+
t_begin "check stderr" && check_stderr
|
95
|
+
|
96
|
+
t_done
|
@@ -0,0 +1,87 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
. ./test-lib.sh
|
3
|
+
|
4
|
+
t_plan 6 "pipelined pipe response for $model"
|
5
|
+
|
6
|
+
t_begin "setup and startup" && {
|
7
|
+
rtmpfiles err out dd_fifo
|
8
|
+
rainbows_setup $model
|
9
|
+
|
10
|
+
# can't load Rack::Lint here since it clobbers body#to_path
|
11
|
+
rainbows -E none -D fast-pipe-response.ru -c $unicorn_config
|
12
|
+
rainbows_wait_start
|
13
|
+
}
|
14
|
+
|
15
|
+
t_begin "read random blob sha1" && {
|
16
|
+
random_blob_sha1=$(rsha1 < random_blob)
|
17
|
+
}
|
18
|
+
|
19
|
+
script='
|
20
|
+
require "digest/sha1"
|
21
|
+
require "kcar"
|
22
|
+
$stdin.binmode
|
23
|
+
expect = ENV["random_blob_sha1"]
|
24
|
+
kcar = Kcar::Response.new($stdin, {})
|
25
|
+
3.times do
|
26
|
+
nr = 0
|
27
|
+
status, headers, body = kcar.rack
|
28
|
+
dig = Digest::SHA1.new
|
29
|
+
body.each { |buf| dig << buf ; nr += buf.size }
|
30
|
+
sha1 = dig.hexdigest
|
31
|
+
sha1 == expect or abort "mismatch: sha1=#{sha1} != expect=#{expect}"
|
32
|
+
body.close
|
33
|
+
end
|
34
|
+
$stdout.syswrite("ok\n")
|
35
|
+
'
|
36
|
+
|
37
|
+
t_begin "staggered pipeline of 3 HTTP requests" && {
|
38
|
+
req='GET /random_blob HTTP/1.1\r\nHost: example.com\r\n'
|
39
|
+
rm -f $ok
|
40
|
+
(
|
41
|
+
export random_blob_sha1
|
42
|
+
$RUBY -e "$script" < $fifo >> $ok &
|
43
|
+
printf "$req"'X-Req:0\r\n\r\n'
|
44
|
+
exec 6>&1
|
45
|
+
(
|
46
|
+
dd bs=16384 count=1
|
47
|
+
printf "$req" >&6
|
48
|
+
dd bs=16384 count=1
|
49
|
+
printf 'X-Req:1\r\n\r\n' >&6
|
50
|
+
dd bs=16384 count=1
|
51
|
+
printf "$req" >&6
|
52
|
+
dd bs=16384 count=1
|
53
|
+
printf 'X-Req:2\r\n' >&6
|
54
|
+
dd bs=16384 count=1
|
55
|
+
printf 'Connection: close\r\n\r' >&6
|
56
|
+
dd bs=16384 count=1
|
57
|
+
printf '\n' >&6
|
58
|
+
cat
|
59
|
+
) < $dd_fifo > $fifo &
|
60
|
+
wait
|
61
|
+
echo ok >> $ok
|
62
|
+
) | socat - TCP:$listen > $dd_fifo
|
63
|
+
test 2 -eq $(grep '^ok$' $ok |wc -l)
|
64
|
+
}
|
65
|
+
|
66
|
+
t_begin "pipeline 3 HTTP requests" && {
|
67
|
+
rm -f $ok
|
68
|
+
req='GET /random_blob HTTP/1.1\r\nHost: example.com\r\n'
|
69
|
+
req="$req"'\r\n'"$req"'\r\n'"$req"
|
70
|
+
req="$req"'Connection: close\r\n\r\n'
|
71
|
+
(
|
72
|
+
export random_blob_sha1
|
73
|
+
$RUBY -e "$script" < $fifo >> $ok &
|
74
|
+
printf "$req"
|
75
|
+
wait
|
76
|
+
echo ok >> $ok
|
77
|
+
) | socat - TCP:$listen > $fifo
|
78
|
+
test 2 -eq $(grep '^ok$' $ok |wc -l)
|
79
|
+
}
|
80
|
+
|
81
|
+
t_begin "shutdown server" && {
|
82
|
+
kill -QUIT $rainbows_pid
|
83
|
+
}
|
84
|
+
|
85
|
+
t_begin "check stderr" && check_stderr
|
86
|
+
|
87
|
+
t_done
|
@@ -16,9 +16,10 @@ t_begin "setup and startup" && {
|
|
16
16
|
|
17
17
|
t_begin "stops a regular request" && {
|
18
18
|
rm -f $ok
|
19
|
-
dd if=/dev/zero bs=
|
19
|
+
dd if=/dev/zero bs=10485761 count=1 of=$tmp
|
20
20
|
curl -vsSf -T $tmp -H Expect: \
|
21
21
|
http://$listen/ > $curl_out 2> $curl_err || > $ok
|
22
|
+
rm -f $tmp
|
22
23
|
dbgcat curl_err
|
23
24
|
dbgcat curl_out
|
24
25
|
test -e $ok
|
@@ -26,7 +27,7 @@ t_begin "stops a regular request" && {
|
|
26
27
|
|
27
28
|
t_begin "stops a large chunked request" && {
|
28
29
|
rm -f $ok
|
29
|
-
dd if=/dev/zero bs=
|
30
|
+
dd if=/dev/zero bs=10485761 count=1 | \
|
30
31
|
curl -vsSf -T- -H Expect: \
|
31
32
|
http://$listen/ > $curl_out 2> $curl_err || > $ok
|
32
33
|
dbgcat curl_err
|
@@ -73,6 +74,7 @@ t_begin "right size sha1 content-length ok" && {
|
|
73
74
|
dd if=/dev/zero bs=10485760 count=1 of=$tmp
|
74
75
|
curl -vsSf -T $tmp -H Expect: \
|
75
76
|
http://$listen/ > $curl_out 2> $curl_err
|
77
|
+
rm -f $tmp
|
76
78
|
dbgcat curl_err
|
77
79
|
dbgcat curl_out
|
78
80
|
test "$(cat $curl_out)" = $blob_sha1
|
@@ -95,6 +97,7 @@ t_begin "default size sha1 content-length ok" && {
|
|
95
97
|
dd if=/dev/zero bs=1048576 count=1 of=$tmp
|
96
98
|
curl -vsSf -T $tmp -H Expect: \
|
97
99
|
http://$listen/ > $curl_out 2> $curl_err
|
100
|
+
rm -f $tmp
|
98
101
|
dbgcat curl_err
|
99
102
|
dbgcat curl_out
|
100
103
|
test "$(cat $curl_out)" = $blob_sha1
|
data/t/t0500-cramp-streaming.sh
CHANGED
data/t/t0501-cramp-rainsocket.sh
CHANGED
data/t/t9000-rack-app-pool.sh
CHANGED
data/t/test_isolate.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rainbows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 415
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 96
|
9
|
+
- 0
|
10
|
+
version: 0.96.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Rainbows! hackers
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-08-03 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -97,6 +97,9 @@ extra_rdoc_files:
|
|
97
97
|
- lib/rainbows/error.rb
|
98
98
|
- lib/rainbows/ev_core.rb
|
99
99
|
- lib/rainbows/event_machine.rb
|
100
|
+
- lib/rainbows/event_machine/response_chunk_pipe.rb
|
101
|
+
- lib/rainbows/event_machine/response_pipe.rb
|
102
|
+
- lib/rainbows/event_machine/try_defer.rb
|
100
103
|
- lib/rainbows/fiber.rb
|
101
104
|
- lib/rainbows/fiber/base.rb
|
102
105
|
- lib/rainbows/fiber/body.rb
|
@@ -113,9 +116,11 @@ extra_rdoc_files:
|
|
113
116
|
- lib/rainbows/queue_pool.rb
|
114
117
|
- lib/rainbows/response.rb
|
115
118
|
- lib/rainbows/response/body.rb
|
119
|
+
- lib/rainbows/response/range.rb
|
116
120
|
- lib/rainbows/rev.rb
|
117
121
|
- lib/rainbows/rev/client.rb
|
118
122
|
- lib/rainbows/rev/core.rb
|
123
|
+
- lib/rainbows/rev/deferred_chunk_response.rb
|
119
124
|
- lib/rainbows/rev/deferred_response.rb
|
120
125
|
- lib/rainbows/rev/heartbeat.rb
|
121
126
|
- lib/rainbows/rev/master.rb
|
@@ -125,6 +130,8 @@ extra_rdoc_files:
|
|
125
130
|
- lib/rainbows/rev_thread_pool.rb
|
126
131
|
- lib/rainbows/rev_thread_spawn.rb
|
127
132
|
- lib/rainbows/revactor.rb
|
133
|
+
- lib/rainbows/revactor/body.rb
|
134
|
+
- lib/rainbows/revactor/proxy.rb
|
128
135
|
- lib/rainbows/sendfile.rb
|
129
136
|
- lib/rainbows/server_token.rb
|
130
137
|
- lib/rainbows/stream_file.rb
|
@@ -181,6 +188,9 @@ files:
|
|
181
188
|
- lib/rainbows/error.rb
|
182
189
|
- lib/rainbows/ev_core.rb
|
183
190
|
- lib/rainbows/event_machine.rb
|
191
|
+
- lib/rainbows/event_machine/response_chunk_pipe.rb
|
192
|
+
- lib/rainbows/event_machine/response_pipe.rb
|
193
|
+
- lib/rainbows/event_machine/try_defer.rb
|
184
194
|
- lib/rainbows/fiber.rb
|
185
195
|
- lib/rainbows/fiber/base.rb
|
186
196
|
- lib/rainbows/fiber/body.rb
|
@@ -197,9 +207,11 @@ files:
|
|
197
207
|
- lib/rainbows/queue_pool.rb
|
198
208
|
- lib/rainbows/response.rb
|
199
209
|
- lib/rainbows/response/body.rb
|
210
|
+
- lib/rainbows/response/range.rb
|
200
211
|
- lib/rainbows/rev.rb
|
201
212
|
- lib/rainbows/rev/client.rb
|
202
213
|
- lib/rainbows/rev/core.rb
|
214
|
+
- lib/rainbows/rev/deferred_chunk_response.rb
|
203
215
|
- lib/rainbows/rev/deferred_response.rb
|
204
216
|
- lib/rainbows/rev/heartbeat.rb
|
205
217
|
- lib/rainbows/rev/master.rb
|
@@ -209,6 +221,8 @@ files:
|
|
209
221
|
- lib/rainbows/rev_thread_pool.rb
|
210
222
|
- lib/rainbows/rev_thread_spawn.rb
|
211
223
|
- lib/rainbows/revactor.rb
|
224
|
+
- lib/rainbows/revactor/body.rb
|
225
|
+
- lib/rainbows/revactor/proxy.rb
|
212
226
|
- lib/rainbows/sendfile.rb
|
213
227
|
- lib/rainbows/server_token.rb
|
214
228
|
- lib/rainbows/stream_file.rb
|
@@ -235,12 +249,15 @@ files:
|
|
235
249
|
- t/bin/sha1sum.rb
|
236
250
|
- t/bin/unused_listen
|
237
251
|
- t/bin/utee
|
252
|
+
- t/close-pipe-response.ru
|
238
253
|
- t/content-md5.ru
|
239
254
|
- t/cramp/README
|
240
255
|
- t/cramp/rainsocket.ru
|
241
256
|
- t/cramp/streaming.ru
|
242
257
|
- t/env.ru
|
243
258
|
- t/env_rack_env.ru
|
259
|
+
- t/fast-pipe-response.ru
|
260
|
+
- t/file-wrap-to_path.ru
|
244
261
|
- t/fork-sleep.ru
|
245
262
|
- t/heartbeat-timeout.ru
|
246
263
|
- t/large-file-response.ru
|
@@ -286,6 +303,13 @@ files:
|
|
286
303
|
- t/t0016-onenine-encoding-is-tricky.sh
|
287
304
|
- t/t0016.rb
|
288
305
|
- t/t0020-large-sendfile-response.sh
|
306
|
+
- t/t0021-sendfile-wrap-to_path.sh
|
307
|
+
- t/t0022-copy_stream-byte-range.sh
|
308
|
+
- t/t0023-sendfile-byte-range.sh
|
309
|
+
- t/t0024-pipelined-sendfile-response.sh
|
310
|
+
- t/t0030-fast-pipe-response.sh
|
311
|
+
- t/t0031-close-pipe-response.sh
|
312
|
+
- t/t0034-pipelined-pipe-response.sh
|
289
313
|
- t/t0100-rack-input-hammer-chunked.sh
|
290
314
|
- t/t0100-rack-input-hammer-content-length.sh
|
291
315
|
- t/t0101-rack-input-trailer.sh
|