Class: Resolv::DNS::Requester
Overview
:nodoc:
Defined Under Namespace
Classes: ConnectedUDP, RequestError, Sender, TCP, UnconnectedUDP
Instance Method Summary (collapse)
- - (Object) close
-
- (Requester) initialize
constructor
A new instance of Requester.
- - (Object) request(sender, tout)
Constructor Details
- (Requester) initialize
A new instance of Requester
623 624 625 626 |
# File 'lib/resolv.rb', line 623 def initialize @senders = {} @socks = nil end |
Instance Method Details
- (Object) close
656 657 658 659 660 661 662 |
# File 'lib/resolv.rb', line 656 def close socks = @socks @socks = nil if socks socks.each {|sock| sock.close } end end |
- (Object) request(sender, tout)
628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 |
# File 'lib/resolv.rb', line 628 def request(sender, tout) timelimit = Time.now + tout sender.send while true now = Time.now timeout = timelimit - now if timeout <= 0 raise ResolvTimeout end select_result = IO.select(@socks, nil, nil, timeout) if !select_result raise ResolvTimeout end reply, from = recv_reply(select_result[0]) 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 |