class HTTPClient::Session
def connect
def connect site = @proxy || @dest retry_number = 0 begin timeout(@connect_timeout, ConnectTimeoutError) do if str = @test_loopback_http_response.shift @socket = create_loopback_socket(site.host, site.port, str) elsif https?(@dest) @socket = SSLSocket.create_socket(self) @ssl_peer_cert = @socket.peer_cert else @socket = create_socket(site.host, site.port) end @socket.sync = @socket_sync end rescue RetryableResponse retry_number += 1 if retry_number < @protocol_retry_count retry end raise BadResponseError.new("connect to the server failed with status #{@status} #{@reason}") rescue TimeoutError if @connect_retry == 0 retry else retry_number += 1 retry if retry_number < @connect_retry end close raise end @state = :WAIT end