In Files

  • resolv.rb

Resolv::DNS::Requester

Public Class Methods

new() click to toggle source
 
               # File resolv.rb, line 589
def initialize
  @senders = {}
  @sock = nil
end
            

Public Instance Methods

close() click to toggle source
 
               # File resolv.rb, line 617
def close
  sock = @sock
  @sock = nil
  sock.close if sock
end
            
request(sender, tout) click to toggle source
 
               # File resolv.rb, line 594
def request(sender, tout)
  timelimit = Time.now + tout
  sender.send
  while (now = Time.now) < timelimit
    timeout = timelimit - now
    if !IO.select([@sock], nil, nil, timeout)
      raise ResolvTimeout
    end
    reply, from = recv_reply
    begin
      msg = Message.decode(reply)
    rescue DecodeError
      next # broken DNS message ignored
    end
    if s = @senders[[from,msg.id]]
      break
    else
      # unexpected DNS message ignored
    end
  end
  return msg, s.data
end