class Bundler::MirrorSockets
the network interface is both ipv4 and ipv5
because of it having many dns entries or because
One mirror may correspond to many different addresses, both
a given mirror.
Class used to build the list of sockets that correspond to
def any?
def any? @addresses.any? do |address| socket = Socket.new(Socket.const_get(address.type), Socket::SOCK_STREAM, 0) socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) value = yield socket, address.to_socket_address, @timeout socket.close unless socket.closed? value end end
def initialize(mirror)
def initialize(mirror) @timeout = mirror.fallback_timeout @addresses = Socket.getaddrinfo(mirror.uri.host, mirror.uri.port).map do |address| SocketAddress.new(address[0], address[3], address[1]) end end