Class Resolv::DNS::Requester
In: lib/resolv.rb
Parent: Object

Methods

close   new   request  

Classes and Modules

Class Resolv::DNS::Requester::ConnectedUDP
Class Resolv::DNS::Requester::RequestError
Class Resolv::DNS::Requester::TCP
Class Resolv::DNS::Requester::UnconnectedUDP

Public Class methods

[Source]

     # File lib/resolv.rb, line 589
589:       def initialize
590:         @senders = {}
591:         @sock = nil
592:       end

Public Instance methods

[Source]

     # File lib/resolv.rb, line 617
617:       def close
618:         sock = @sock
619:         @sock = nil
620:         sock.close if sock
621:       end

[Source]

     # File lib/resolv.rb, line 594
594:       def request(sender, tout)
595:         timelimit = Time.now + tout
596:         sender.send
597:         while (now = Time.now) < timelimit
598:           timeout = timelimit - now
599:           if !IO.select([@sock], nil, nil, timeout)
600:             raise ResolvTimeout
601:           end
602:           reply, from = recv_reply
603:           begin
604:             msg = Message.decode(reply)
605:           rescue DecodeError
606:             next # broken DNS message ignored
607:           end
608:           if s = @senders[[from,msg.id]]
609:             break
610:           else
611:             # unexpected DNS message ignored
612:           end
613:         end
614:         return msg, s.data
615:       end

[Validate]