coolio+xepoll_thread*: use shutdown() for keepalive timeout
[rainbows.git] / t / sha1-random-size.ru
blob4ef5d7b7581ff3e830483f32ac4fba624900c1bb
1 # SHA1 checksum generator
2 require 'digest/sha1'
3 use Rack::ContentLength
4 cap = 16384
5 app = lambda do |env|
6   /\A100-continue\z/i =~ env['HTTP_EXPECT'] and
7     return [ 100, {}, [] ]
8   digest = Digest::SHA1.new
9   input = env['rack.input']
10   case env["PATH_INFO"]
11   when "/gets_read_mix"
12     warn "GETS_READ_MIX #{env['HTTP_TRANSFER_ENCODING'].inspect}"
13     if buf = input.gets
14       warn "input.rbuf: #{input.instance_variable_get(:@rbuf).inspect}"
15       begin
16         digest.update(buf)
17         warn "buf.size : #{buf.size}"
18       end while input.read(rand(cap), buf)
19     end
20   when "/each"
21     input.each { |buf| digest.update(buf) }
22   else
23     if buf = input.read(rand(cap))
24       begin
25         raise "#{buf.size} > #{cap}" if buf.size > cap
26         digest.update(buf)
27       end while input.read(rand(cap), buf)
28     end
29   end
31   [ 200, {'Content-Type' => 'text/plain'}, [ digest.hexdigest << "\n" ] ]
32 end
33 run app