mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
o http.rb: return value of 'head' was wrong
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@655 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d8d148d816
commit
0dcf7498b1
2 changed files with 22 additions and 18 deletions
|
@ -89,7 +89,7 @@ class HTTPBadResponse < HTTPError; end
|
||||||
|
|
||||||
|
|
||||||
def get( path, u_header = nil, dest = nil, &block )
|
def get( path, u_header = nil, dest = nil, &block )
|
||||||
u_header ||= {}
|
u_header = procheader( u_header )
|
||||||
if block then
|
if block then
|
||||||
dest = ReadAdapter.new( block )
|
dest = ReadAdapter.new( block )
|
||||||
ret = nil
|
ret = nil
|
||||||
|
@ -106,7 +106,8 @@ class HTTPBadResponse < HTTPError; end
|
||||||
return resp['http-header'], ret
|
return resp['http-header'], ret
|
||||||
end
|
end
|
||||||
|
|
||||||
def get2( path, u_header = {} )
|
def get2( path, u_header = nil )
|
||||||
|
u_header = procheader( u_header )
|
||||||
only_header( :get, path, u_header )
|
only_header( :get, path, u_header )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -120,14 +121,15 @@ class HTTPBadResponse < HTTPError; end
|
||||||
dest
|
dest
|
||||||
end
|
end
|
||||||
|
|
||||||
def head( path, u_header = {} )
|
def head( path, u_header = nil )
|
||||||
ret = only_header( :head, path, u_header )['http-header']
|
u_header = procheader( u_header )
|
||||||
|
header = only_header( :head, path, u_header )
|
||||||
ensure_termination u_header
|
ensure_termination u_header
|
||||||
ret
|
header
|
||||||
end
|
end
|
||||||
|
|
||||||
def post( path, data, u_header = nil, dest = nil, &block )
|
def post( path, data, u_header = nil, dest = nil, &block )
|
||||||
u_header ||= {}
|
u_header = procheader( u_header )
|
||||||
if block then
|
if block then
|
||||||
dest = ReadAdapter.new( block )
|
dest = ReadAdapter.new( block )
|
||||||
ret = nil
|
ret = nil
|
||||||
|
@ -145,12 +147,13 @@ class HTTPBadResponse < HTTPError; end
|
||||||
end
|
end
|
||||||
|
|
||||||
def post2( path, data, u_header = {} )
|
def post2( path, data, u_header = {} )
|
||||||
|
u_header = procheader( u_header )
|
||||||
only_header :post, path, u_header, data
|
only_header :post, path, u_header, data
|
||||||
end
|
end
|
||||||
|
|
||||||
# not tested because I could not setup apache (__;;;
|
# not tested because I could not setup apache (__;;;
|
||||||
def put( path, src = nil, u_header = {}, &block )
|
def put( path, src = nil, u_header = nil, &block )
|
||||||
u_header ||= u_header
|
u_header = procheader( u_header )
|
||||||
connecting( u_header, true ) {
|
connecting( u_header, true ) {
|
||||||
@command.put path, u_header, src, dest
|
@command.put path, u_header, src, dest
|
||||||
}
|
}
|
||||||
|
@ -163,13 +166,13 @@ class HTTPBadResponse < HTTPError; end
|
||||||
|
|
||||||
|
|
||||||
def only_header( mid, path, u_header, data = nil )
|
def only_header( mid, path, u_header, data = nil )
|
||||||
@u_header = u_header ? procheader(u_header) : {}
|
@u_header = u_header
|
||||||
@response = nil
|
@response = nil
|
||||||
ensure_connection @u_header
|
ensure_connection u_header
|
||||||
if data then
|
if data then
|
||||||
@command.send mid, edit_path(path), @u_header, data
|
@command.send mid, edit_path(path), u_header, data
|
||||||
else
|
else
|
||||||
@command.send mid, edit_path(path), @u_header
|
@command.send mid, edit_path(path), u_header
|
||||||
end
|
end
|
||||||
@response = @command.get_response
|
@response = @command.get_response
|
||||||
@response['http-header']
|
@response['http-header']
|
||||||
|
@ -187,7 +190,6 @@ class HTTPBadResponse < HTTPError; end
|
||||||
end
|
end
|
||||||
|
|
||||||
def connecting( u_header, putp = false )
|
def connecting( u_header, putp = false )
|
||||||
u_header = procheader( u_header )
|
|
||||||
ensure_connection u_header
|
ensure_connection u_header
|
||||||
yield
|
yield
|
||||||
ensure_termination u_header
|
ensure_termination u_header
|
||||||
|
@ -203,7 +205,7 @@ class HTTPBadResponse < HTTPError; end
|
||||||
end
|
end
|
||||||
|
|
||||||
def ensure_termination( u_header )
|
def ensure_termination( u_header )
|
||||||
unless keep_alive? u_header then
|
unless keep_alive? u_header and not @socket.closed? then
|
||||||
@socket.close
|
@socket.close
|
||||||
end
|
end
|
||||||
@u_header = @response = nil
|
@u_header = @response = nil
|
||||||
|
@ -224,6 +226,7 @@ class HTTPBadResponse < HTTPError; end
|
||||||
end
|
end
|
||||||
|
|
||||||
def procheader( h )
|
def procheader( h )
|
||||||
|
return( {} ) unless h
|
||||||
new = {}
|
new = {}
|
||||||
h.each do |k,v|
|
h.each do |k,v|
|
||||||
arr = k.split('-')
|
arr = k.split('-')
|
||||||
|
@ -339,10 +342,11 @@ class HTTPBadResponse < HTTPError; end
|
||||||
if clen = content_length( header ) then
|
if clen = content_length( header ) then
|
||||||
@socket.read clen, dest
|
@socket.read clen, dest
|
||||||
else
|
else
|
||||||
###
|
##### "multipart/byteranges" check should be done here ...
|
||||||
### "multipart/bytelenges" check should be done here ...
|
|
||||||
###
|
# now, length is designated by closing socket
|
||||||
@socket.read_all dest
|
@socket.read_all dest
|
||||||
|
@socket.close
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,7 +15,7 @@ require 'socket'
|
||||||
|
|
||||||
module Net
|
module Net
|
||||||
|
|
||||||
Version = '1.1.9'
|
Version = '1.1.10'
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue