Skip to content

Commit

Permalink
Getting rid of sockaddr/bind attempt, replacing with local_host and l…
Browse files Browse the repository at this point in the history
…ocal_port
  • Loading branch information
ianblenke committed Nov 13, 2009
1 parent bc6a1b1 commit e464596
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
6 changes: 4 additions & 2 deletions lib/httpclient.rb
Expand Up @@ -318,7 +318,8 @@ def attr_proxy(symbol, assignable = false)
# for loopback test. See test/* to see how to use it.
attr_proxy(:test_loopback_http_response)
# Local IP Address to bind() local side of the socket to
attr_proxy(:local_sockaddr,true)
attr_proxy(:local_host,true)
attr_proxy(:local_port,true)

# Default extheader for PROPFIND request.
PROPFIND_DEFAULT_EXTHEADER = { 'Depth' => '0' }
Expand Down Expand Up @@ -355,7 +356,8 @@ def initialize(*args)
@session_manager.ssl_config = @ssl_config = SSLConfig.new(self)
@cookie_manager = WebAgent::CookieManager.new
@follow_redirect_count = 10
@local_sockaddr = nil
@local_host = nil
@local_port = nil
load_environment
self.proxy = proxy if proxy
end
Expand Down
22 changes: 13 additions & 9 deletions lib/httpclient/session.rb
Expand Up @@ -102,8 +102,9 @@ class SessionManager
attr_accessor :read_block_size
attr_accessor :protocol_retry_count

# Local sockaddr structure to bind() to before connect
attr_accessor :local_sockaddr
# Local host/port to bind() to before connect
attr_accessor :local_host
attr_accessor :local_port

attr_accessor :ssl_config

Expand Down Expand Up @@ -131,7 +132,8 @@ def initialize(client)
@ssl_config = nil
@test_loopback_http_response = []

@local_sockaddr = nil
@local_host = nil
@local_port = nil

@sess_pool = []
@sess_pool_mutex = Mutex.new
Expand Down Expand Up @@ -189,7 +191,8 @@ def open(uri, via_proxy = false)
sess.protocol_retry_count = @protocol_retry_count
sess.ssl_config = @ssl_config
sess.debug_dev = @debug_dev
sess.local_sockaddr = @local_sockaddr
sess.local_host = @local_host
sess.local_port = @local_port
sess.test_loopback_http_response = @test_loopback_http_response
end
sess
Expand Down Expand Up @@ -484,8 +487,9 @@ class Session
attr_accessor :read_block_size
attr_accessor :protocol_retry_count

# Local sockaddr to bind() to for connect
attr_accessor :local_sockaddr
# Local host/port to bind() to for connect
attr_accessor :local_host
attr_accessor :local_port

attr_accessor :ssl_config
attr_reader :ssl_peer_cert
Expand All @@ -512,7 +516,8 @@ def initialize(client, dest, agent_name, from)

@test_loopback_http_response = nil

@local_sockaddr = nil
@local_host = nil
@local_port = nil

@agent_name = agent_name
@from = from
Expand Down Expand Up @@ -641,7 +646,6 @@ def connect
begin
timeout(@connect_timeout, ConnectTimeoutError) do
@socket = create_socket(site)
@socket.bind = @local_sockaddr if @local_sockaddr
if @dest.scheme == 'https'
if @socket.is_a?(LoopBackSocket)
connect_ssl_proxy(@socket, URI.parse(@dest.to_s)) if @proxy
Expand Down Expand Up @@ -684,7 +688,7 @@ def create_socket(site)
if str = @test_loopback_http_response.shift
socket = LoopBackSocket.new(site.host, site.port, str)
else
socket = TCPSocket.new(site.host, site.port)
socket = TCPSocket.new(site.host, site.port, @local_host, @local_port)
end
if @debug_dev
@debug_dev << "! CONNECTION ESTABLISHED\n"
Expand Down

0 comments on commit e464596

Please sign in to comment.