2 # frozen_string_literal: false
4 require 'unicorn/preread_input'
5 use Unicorn::PrereadInput
8 $stderr.write "app dispatch: #{nr += 1}\n"
9 input = env["rack.input"]
11 if buf = input.read(16384)
14 end while input.read(16384, buf)
15 buf.clear # remove this call if Ruby ever gets escape analysis
17 if env['HTTP_TRAILER'] =~ /\bContent-MD5\b/i
18 cmd5_b64 = env['HTTP_CONTENT_MD5'] or return [500, {}, ['No Content-MD5']]
19 cmd5_bin = cmd5_b64.unpack('m')[0]
20 return [500, {}, [ cmd5_b64 ] ] if cmd5_bin != dig.digest
22 [ 200, {}, [ dig.hexdigest ] ]