Method: HTTPClient::Session#create_socket

Defined in:
lib/httpclient/session.rb

#create_socket(host, port) ⇒ Object



605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
# File 'lib/httpclient/session.rb', line 605

def create_socket(host, port)
  socket = nil
  begin
    @debug_dev << "! CONNECT TO #{host}:#{port}\n" if @debug_dev
    clean_host = host.delete("[]")
    if @socket_local == Site::EMPTY
      socket = TCPSocket.new(clean_host, port)
    else
      clean_local = @socket_local.host.delete("[]")
      socket = TCPSocket.new(clean_host, port, clean_local, @socket_local.port)
    end
    socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true) if @tcp_keepalive
    if @debug_dev
      @debug_dev << "! CONNECTION ESTABLISHED\n"
      socket.extend(DebugSocket)
      socket.debug_dev = @debug_dev
    end
  rescue SystemCallError => e
    raise e.class, e.message + " (#{host}:#{port})"
  rescue SocketError => e
    raise e.class, e.message + " (#{host}:#{port})"
  end
  socket
end