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 +++++++---------- lib/net/pop.rb | 6 +++--- lib/net/protocol.rb | 2 +- 3 files changed, 11 insertions(+), 14 deletions(-) (limited to 'lib') 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 diff --git a/lib/net/pop.rb b/lib/net/pop.rb index 65cd498f55..046763e0a8 100644 --- a/lib/net/pop.rb +++ b/lib/net/pop.rb @@ -329,11 +329,11 @@ Net::POP3 def initialize( sock ) rep = super( sock ) - /<[^@]+@[^@>]+>/o === rep.msg - @stamp = $& - unless @stamp then + m = /<.+>/.match( rep.msg ) + unless m then raise ProtoAuthError, "This is not APOP server: can't login" end + @stamp = m[0] end diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb index aa994016f4..5fbfb53230 100644 --- a/lib/net/protocol.rb +++ b/lib/net/protocol.rb @@ -15,7 +15,7 @@ require 'socket' module Net - Version = '1.1.12' + Version = '1.1.13' =begin -- cgit v1.2.3