From ffc3c4b401424aae94e45462acbf3fc585b13e0c Mon Sep 17 00:00:00 2001 From: aamine Date: Thu, 7 Feb 2002 20:22:39 +0000 Subject: aamine * lib/net/http.rb: HTTP.Proxy should use self for proxy-class's super class. * lib/net/http.rb: initialize HTTP.proxy_port by HTTP.port. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 ++++ lib/net/http.rb | 96 ++++++++++++++++++++++++++++++----------------------- lib/net/protocol.rb | 2 +- 3 files changed, 62 insertions(+), 43 deletions(-) diff --git a/ChangeLog b/ChangeLog index 058ddd8796..13b0873b73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Feb 8 05:31:48 2002 Minero Aoki + + * lib/net/http.rb: HTTP.Proxy should use self for proxy-class's + super class. + + * lib/net/http.rb: initialize HTTP.proxy_port by HTTP.port. + Thu Feb 07 13:44:08 2002 akira yamada * uri/common.rb (URI::join): new method. diff --git a/lib/net/http.rb b/lib/net/http.rb index f2a259a18a..e1bda208fa 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -453,13 +453,25 @@ module Net class HTTP < Protocol - HTTPVersion = '1.1' - # - # connection + # constructors # - protocol_param :port, '80' + class << self + + def start( address, port = nil, p_addr = nil, p_port = nil, &block ) + new( address, port, p_addr, p_port ).start( &block ) + end + + alias newobj new + + def new( address, port = nil, p_addr = nil, p_port = nil ) + obj = Proxy(p_addr, p_port).newobj(address, port) + setimplversion obj + obj + end + + end def initialize( addr, port = nil ) super @@ -467,6 +479,15 @@ module Net @seems_1_0_server = false end + + # + # connection + # + + protocol_param :port, '80' + + HTTPVersion = '1.1' + private def do_start @@ -506,26 +527,19 @@ module Net public class << self - def Proxy( p_addr, p_port = nil ) - if p_addr then - ProxyMod.create_proxy_class( p_addr, p_port || self.port ) - else - self - end - end - - alias orig_new new + p_addr or return self - def new( address, port = nil, p_addr = nil, p_port = nil ) - c = p_addr ? self::Proxy(p_addr, p_port) : self - i = c.orig_new( address, port ) - setimplversion i - i - end - - def start( address, port = nil, p_addr = nil, p_port = nil, &block ) - new( address, port, p_addr, p_port ).start( &block ) + p_port ||= port() + mod = ProxyDelta + proxyclass = Class.new(self) + proxyclass.module_eval { + include mod + @is_proxy_class = true + @proxy_address = p_addr + @proxy_port = p_port + } + proxyclass end @is_proxy_class = false @@ -538,7 +552,6 @@ module Net attr_reader :proxy_address attr_reader :proxy_port - end def proxy? @@ -556,40 +569,39 @@ module Net alias proxyaddr proxy_address alias proxyport proxy_port - def edit_path( path ) - path - end + private + # without proxy - module ProxyMod + def conn_address + address + end - def self.create_proxy_class( p_addr, p_port ) - mod = self - klass = Class.new( HTTP ) - klass.module_eval { - include mod - @is_proxy_class = true - @proxy_address = p_addr - @proxy_port = p_port - } - klass - end + def conn_port + port + end + def edit_path( path ) + path + end + + module ProxyDelta private + + # with proxy def conn_address - proxy_address() + proxy_address end def conn_port - proxy_port() + proxy_port end def edit_path( path ) 'http://' + addr_port() + path end - - end # module ProxyMod + end # diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb index f21bdf72f1..1cf1cfdb09 100644 --- a/lib/net/protocol.rb +++ b/lib/net/protocol.rb @@ -601,7 +601,7 @@ module Net BLOCK_SIZE = 1024 * 2 def rbuf_fill - unless IO.select [@socket], nil, nil, @read_timeout then + until IO.select [@socket], nil, nil, @read_timeout do on_read_timeout end @rbuf << @socket.sysread(BLOCK_SIZE) -- cgit v1.2.3