Class | Dnsruby::SingleResolver |
In: |
lib/Dnsruby/SingleResolver.rb
|
Parent: | Resolver |
This class has been deprecated. This implementation exists for legacy clients. New code should use the Dnsruby::Resolver class. The SingleResolver class targets a single resolver, and controls the sending of a single packet with a packet timeout. It performs no retries. Only two threads are used - the client thread and a select thread (which is reused across all queries).
These methods raise an exception or return a response message with rcode==NOERROR
These methods use a response queue to return the response and the error to the client. Support for EventMachine has been deprecated
packet_timeout | -> | query_timeout |
Can take a hash with the following optional keys :
# File lib/Dnsruby/SingleResolver.rb, line 56 56: def initialize(*args) 57: arg=args[0] 58: @single_res_mutex = Mutex.new 59: @packet_timeout = Resolver::DefaultPacketTimeout 60: @query_timeout = @packet_timeout 61: @port = Resolver::DefaultPort 62: @udp_size = Resolver::DefaultUDPSize 63: @dnssec = Resolver::DefaultDnssec 64: @use_tcp = false 65: @no_tcp = false 66: @tsig = nil 67: @ignore_truncation = false 68: @src_address = nil 69: @src_port = [0] 70: @recurse = true 71: @persistent_udp = false 72: @persistent_tcp = false 73: @retry_times = 1 74: @retry_delay = 0 75: @single_resolvers = [] 76: @configured = false 77: @do_caching = true 78: @config = Config.new 79: 80: if (arg==nil) 81: # Get default config 82: @config = Config.new 83: @config.get_ready 84: @server = @config.nameserver[0] 85: elsif (arg.kind_of?String) 86: @config.get_ready 87: @configured= true 88: @config.nameserver=[arg] 89: @server = @config.nameserver[0] 90: # @server=arg 91: elsif (arg.kind_of?Name) 92: @config.get_ready 93: @configured= true 94: @config.nameserver=arg 95: @server = @config.nameserver[0] 96: # @server=arg 97: elsif (arg.kind_of?Hash) 98: arg.keys.each do |attr| 99: if (attr == :server) 100: @config.get_ready 101: @configured= true 102: @config.nameserver=[arg[attr]] 103: @server = @config.nameserver[0] 104: 105: else 106: begin 107: send(attr.to_s+"=", arg[attr]) 108: rescue Exception 109: Dnsruby.log.error{"Argument #{attr} not valid\n"} 110: end 111: end 112: end 113: end 114: 115: isr = PacketSender.new({:server=>@server, :dnssec=>@dnssec, 116: :use_tcp=>@use_tcp, :no_tcp=>@no_tcp, :packet_timeout=>@packet_timeout, 117: :tsig => @tsig, :ignore_truncation=>@ignore_truncation, 118: :src_address=>@src_address, :src_port=>@src_port, 119: :do_caching=>@do_caching, 120: :recurse=>@recurse, :udp_size=>@udp_size}) 121: 122: @single_resolvers = [isr] 123: 124: # ResolverRegister::register_single_resolver(self) 125: end
Add the appropriate EDNS OPT RR for the specified packet. This is done automatically, unless you are using Resolver#send_plain_message
# File lib/Dnsruby/SingleResolver.rb, line 168 168: def add_opt_rr(m) 169: @single_res_mutex.synchronize { 170: @single_resolvers[0].add_opt_rr(m) 171: } 172: end
# File lib/Dnsruby/SingleResolver.rb, line 161 161: def packet_timeout=(t) 162: @packet_timeout = t 163: @query_timeout = t 164: end
# File lib/Dnsruby/SingleResolver.rb, line 144 144: def server 145: # @single_res_mutex.synchronize { 146: if (!@configured) 147: @config.get_ready 148: add_config_nameservers 149: end 150: return @single_resolvers[0].server 151: # } 152: end
# File lib/Dnsruby/SingleResolver.rb, line 127 127: def server=(s) 128: if (!@configured) 129: @config.get_ready 130: end 131: @server = Config.resolve_server(s).to_s 132: isr = PacketSender.new({:server=>@server, :dnssec=>@dnssec, 133: :use_tcp=>@use_tcp, :no_tcp=>@no_tcp, :packet_timeout=>@packet_timeout, 134: :tsig => @tsig, :ignore_truncation=>@ignore_truncation, 135: :src_address=>@src_address, :src_port=>@src_port, 136: :do_caching=>@do_caching, 137: :recurse=>@recurse, :udp_size=>@udp_size}) 138: 139: @single_res_mutex.synchronize { 140: @single_resolvers = [isr] 141: } 142: end