Sha256: 907018510352732b20f738a075c59a6f156b23b7c962ed53671663558ff2ea51

Contents?: true

Size: 1.13 KB

Versions: 32

Compression:

Stored size: 1.13 KB

Contents

module Excon
  class UnixSocket < Excon::Socket

    private

    def connect
      @socket  = ::Socket.new(::Socket::AF_UNIX, ::Socket::SOCK_STREAM, 0)
      # If a Unix proxy was specified, the :path option will be set for it,
      # otherwise fall back to the :socket option.
      proxy_path = @data[:proxy] ? @data[:proxy][:path] : nil
      sockaddr = ::Socket.sockaddr_un(proxy_path || @data[:socket])
      if @nonblock
        begin
          @socket.connect_nonblock(sockaddr)
        rescue Errno::EINPROGRESS
          unless IO.select(nil, [@socket], nil, @data[:connect_timeout])
            raise(Excon::Errors::Timeout.new("connect timeout reached"))
          end
          begin
            @socket.connect_nonblock(sockaddr)
          rescue Errno::EISCONN
          end
        end
      else
        begin
          Timeout.timeout(@data[:connect_timeout]) do
            @socket.connect(sockaddr)
          end
        rescue Timeout::Error
          raise Excon::Errors::Timeout.new('connect timeout reached')
        end
      end

    rescue => error
      @socket.close rescue nil if @socket
      raise error
    end

  end
end

Version data entries

32 entries across 32 versions & 4 rubygems

Version Path
excon-0.51.0 lib/excon/unix_socket.rb
excon-0.50.1 lib/excon/unix_socket.rb
excon-0.50.0 lib/excon/unix_socket.rb
able-neo4j-1.0.0 vendor/bundle/jruby/1.9/gems/excon-0.45.4/lib/excon/unix_socket.rb
excon-0.49.0 lib/excon/unix_socket.rb
excon-0.48.0 lib/excon/unix_socket.rb
excon-0.47.0 lib/excon/unix_socket.rb
excon-0.46.0 lib/excon/unix_socket.rb
framed_rails-0.2.0 vendor/gems/excon-0.45.3/lib/excon/unix_socket.rb
framed_rails-0.1.7 vendor/gems/excon-0.45.3/lib/excon/unix_socket.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/excon-0.45.4/lib/excon/unix_socket.rb
framed_rails-0.1.5 vendor/gems/excon-0.45.3/lib/excon/unix_socket.rb
framed_rails-0.1.4 vendor/gems/excon-0.45.3/lib/excon/unix_socket.rb
framed_rails-0.1.3 vendor/gems/excon-0.45.3/lib/excon/unix_socket.rb
framed_rails-0.1.2 vendor/gems/excon-0.45.3/lib/excon/unix_socket.rb
framed_rails-0.1.0 vendor/gems/excon-0.45.3/lib/excon/unix_socket.rb
excon-0.45.4 lib/excon/unix_socket.rb
vagrant-cloudstack-1.1.0 vendor/bundle/gems/excon-0.45.3/lib/excon/unix_socket.rb
excon-0.45.3 lib/excon/unix_socket.rb
excon-0.45.2 lib/excon/unix_socket.rb