From d7704d7cd0ea270b002d96ede181244dbe8f5ccb Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Sat, 2 Aug 2008 16:17:15 +0300 Subject: [PATCH] Strip trailing spaces and untabify request.rb. --- lib/thin/request.rb | 58 ++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/lib/thin/request.rb b/lib/thin/request.rb index 8d7b3b76..230958e5 100644 --- a/lib/thin/request.rb +++ b/lib/thin/request.rb @@ -5,7 +5,7 @@ module Thin # Raised when an incoming request is not valid # and the server can not process it. class InvalidRequest < IOError; end - + # A request sent by the client to the server. class Request # Maximum request body size before it is moved out of memory @@ -13,7 +13,7 @@ class Request MAX_BODY = 1024 * (80 + 32) BODY_TMPFILE = 'thin-body'.freeze MAX_HEADER = 1024 * (80 + 32) - + # Freeze some HTTP header names & values SERVER_SOFTWARE = 'SERVER_SOFTWARE'.freeze HTTP_VERSION = 'HTTP_VERSION'.freeze @@ -24,7 +24,7 @@ class Request CONNECTION = 'HTTP_CONNECTION'.freeze KEEP_ALIVE_REGEXP = /\bkeep-alive\b/i.freeze CLOSE_REGEXP = /\bclose\b/i.freeze - + # Freeze some Rack header names RACK_INPUT = 'rack.input'.freeze RACK_VERSION = 'rack.version'.freeze @@ -32,16 +32,16 @@ class Request RACK_MULTITHREAD = 'rack.multithread'.freeze RACK_MULTIPROCESS = 'rack.multiprocess'.freeze RACK_RUN_ONCE = 'rack.run_once'.freeze - + # CGI-like request environment variables attr_reader :env - + # Unparsed data of the request attr_reader :data - + # Request body attr_reader :body - + def initialize @parser = HttpParser.new @data = '' @@ -49,36 +49,36 @@ def initialize @body = StringIO.new @env = { SERVER_SOFTWARE => SERVER, - + # Rack stuff RACK_INPUT => @body, - + RACK_VERSION => VERSION::RACK, RACK_ERRORS => STDERR, - + RACK_MULTITHREAD => false, RACK_MULTIPROCESS => false, RACK_RUN_ONCE => false } end - + # Parse a chunk of data into the request environment # Raises a +InvalidRequest+ if invalid. # Returns +true+ if the parsing is complete. def parse(data) if @parser.finished? # Header finished, can only be some more body - body << data + body << data else # Parse more header using the super parser @data << data - raise InvalidRequest, 'Header longer than allowed' if @data.size > MAX_HEADER - + raise InvalidRequest, 'Header longer than allowed' if @data.size > MAX_HEADER + @nparsed = @parser.execute(@env, @data, @nparsed) # Transfert to a tempfile if body is very big move_body_to_tempfile if @parser.finished? && content_length > MAX_BODY end - - + + if finished? # Check if header and body are complete @data = nil @body.rewind @@ -87,17 +87,17 @@ def parse(data) false # Not finished, need more data end end - + # +true+ if headers and body are finished parsing def finished? @parser.finished? && @body.size >= content_length end - + # Expected size of the body def content_length @env[CONTENT_LENGTH].to_i end - + # Returns +true+ if the client expect the connection to be persistent. def persistent? # Clients and servers SHOULD NOT assume that a persistent connection @@ -105,7 +105,7 @@ def persistent? # signaled. (http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html) if @env[HTTP_VERSION] == HTTP_1_0 @env[CONNECTION] =~ KEEP_ALIVE_REGEXP - + # HTTP/1.1 client intends to maintain a persistent connection unless # a Connection header including the connection-token "close" was sent # in the request @@ -113,24 +113,24 @@ def persistent? @env[CONNECTION].nil? || @env[CONNECTION] !~ CLOSE_REGEXP end end - + def remote_address=(address) @env[REMOTE_ADDR] = address end - + def forwarded_for @env[FORWARDED_FOR] end - + def threaded=(value) @env[RACK_MULTITHREAD] = value end - + # Close any resource used by the request def close @body.delete if @body.class == Tempfile - end - + end + private def move_body_to_tempfile current_body = @body @@ -138,7 +138,7 @@ def move_body_to_tempfile @body = Tempfile.new(BODY_TMPFILE) @body.binmode @body << current_body.read - @env[RACK_INPUT] = @body + @env[RACK_INPUT] = @body end - end -end \ No newline at end of file + end +end