From 6d77e51b17a29daf71c329cccdbaee1c140b101d Mon Sep 17 00:00:00 2001 From: aamine Date: Fri, 14 Apr 2000 10:41:35 +0000 Subject: o pop.rb: accept illegal timestamp (reported by WATANABE Hirofumi) o http.rb: when body was chunked, does not set 'Content-Length' git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@665 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/net/http.rb | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'lib/net/http.rb') diff --git a/lib/net/http.rb b/lib/net/http.rb index 4a61e0c747..db6a5747b5 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -170,6 +170,7 @@ All "key" is case-insensitive. resp end + def post( path, data, u_header = nil, dest = nil, &block ) u_header = procheader( u_header ) dest, ret = HTTP.procdest( dest, block ) @@ -193,6 +194,7 @@ All "key" is case-insensitive. } end + # not tested because I could not setup apache (__;;; def put( path, src, u_header = nil ) u_header = procheader( u_header ) @@ -592,7 +594,7 @@ All "key" is case-insensitive. str = @socket.readline m = /\AHTTP\/(\d+\.\d+)?\s+(\d\d\d)\s*(.*)\z/i.match( str ) unless m then - raise HTTPBadResponse, "wrong status line format: #{str}" + raise HTTPBadResponse, "wrong status line: #{str}" end @http_version = m[1] status = m[2] @@ -605,7 +607,6 @@ All "key" is case-insensitive. end def read_chunked( ret, header ) - line = nil len = nil total = 0 @@ -613,20 +614,16 @@ All "key" is case-insensitive. line = @socket.readline m = /[0-9a-hA-H]+/.match( line ) unless m then - raise HTTPBadResponse, "chunk size not given" + raise HTTPBadResponse, "wrong chunk size line: #{line}" end len = m[0].hex break if len == 0 @socket.read( len, ret ); total += len @socket.read 2 # \r\n end - while true do - line = @socket.readline - break if line.empty? + until @socket.readline.empty? do + ; end - - header.delete 'transfer-encoding' - header[ 'content-length' ] = total.to_s end @@ -644,7 +641,7 @@ All "key" is case-insensitive. def chunked?( header ) str = header[ 'transfer-encoding' ] - if str and /(\A|\s+)chunked(?:\s+|\z)/i === str then + if str and /(?:\A|\s+)chunked(?:\s+|\z)/i === str then true else false -- cgit v1.2.3