Class Dnsruby::SingleResolver
In: lib/Dnsruby/SingleResolver.rb
Parent: Resolver
ResolvError EncodeError OtherResolvError ServFail FormErr DecodeError NXRRSet YXDomain NotImp NXDomain VerifyError NotAuth YXRRSet NotZone Refused TsigError Message Update CodeMapper Types MetaTypes QTypes Nsec3HashAlgorithms Algorithms OpCode Classes ExtendedRCode RCode Modes Comparable Name RRSet Resolver SingleResolver StandardError TimeoutError ResolvTimeout DNS Dnssec Hosts SelectThread\n[lib/Dnsruby/select_thread.rb\nlib/Dnsruby/select_thread.rb.michael.rb] Recursor IPv6 IPv4 ZoneTransfer MessageDecoder MessageEncoder Question Header TheLog RR\n[lib/Dnsruby/resource/A.rb\nlib/Dnsruby/resource/AAAA.rb\nlib/Dnsruby/resource/AFSDB.rb\nlib/Dnsruby/resource/CERT.rb\nlib/Dnsruby/resource/DLV.rb\nlib/Dnsruby/resource/DNSKEY.rb\nlib/Dnsruby/resource/DS.rb\nlib/Dnsruby/resource/HINFO.rb\nlib/Dnsruby/resource/IN.rb\nlib/Dnsruby/resource/ISDN.rb\nlib/Dnsruby/resource/LOC.rb\nlib/Dnsruby/resource/MINFO.rb\nlib/Dnsruby/resource/MX.rb\nlib/Dnsruby/resource/NAPTR.rb\nlib/Dnsruby/resource/NSAP.rb\nlib/Dnsruby/resource/NSEC.rb\nlib/Dnsruby/resource/NSEC3.rb\nlib/Dnsruby/resource/NSEC3PARAM.rb\nlib/Dnsruby/resource/OPT.rb\nlib/Dnsruby/resource/PX.rb\nlib/Dnsruby/resource/RP.rb\nlib/Dnsruby/resource/RRSIG.rb\nlib/Dnsruby/resource/RT.rb\nlib/Dnsruby/resource/SOA.rb\nlib/Dnsruby/resource/SPF.rb\nlib/Dnsruby/resource/SRV.rb\nlib/Dnsruby/resource/TKEY.rb\nlib/Dnsruby/resource/TSIG.rb\nlib/Dnsruby/resource/TXT.rb\nlib/Dnsruby/resource/X25.rb\nlib/Dnsruby/resource/domain_name.rb\nlib/Dnsruby/resource/generic.rb\nlib/Dnsruby/resource/resource.rb] ValidatorThread PacketSender ResolverRuby Config KeyCache Cache SingleVerifier Resolv Iana lib/Dnsruby/DNS.rb lib/Dnsruby/dnssec.rb lib/Dnsruby/Hosts.rb lib/Dnsruby/select_thread.rb.michael.rb lib/Dnsruby/Recursor.rb lib/Dnsruby/update.rb lib/Dnsruby/ipv6.rb lib/Dnsruby/ipv4.rb lib/Dnsruby/code_mapper.rb lib/Dnsruby/zone_transfer.rb lib/Dnsruby/message.rb lib/Dnsruby/TheLog.rb lib/Dnsruby/resource/resource.rb lib/Dnsruby/validator_thread.rb lib/Dnsruby/PacketSender.rb lib/Dnsruby/Resolver.rb lib/Dnsruby/Config.rb lib/Dnsruby/key_cache.rb lib/Dnsruby/Cache.rb lib/Dnsruby/single_verifier.rb lib/Dnsruby/SingleResolver.rb lib/Dnsruby/name.rb lib/dnsruby.rb lib/Dnsruby/resource/TKEY.rb lib/Dnsruby/iana_ports.rb Dnsruby dot/m_56_0.png

Dnsruby::SingleResolver

 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).

Methods

Synchronous

These methods raise an exception or return a response message with rcode==NOERROR

  • Dnsruby::SingleResolver#send_message(msg [, use_tcp]))
  • Dnsruby::SingleResolver#query(name [, type [, klass]])

Asynchronous

These methods use a response queue to return the response and the error to the client. Support for EventMachine has been deprecated

  • Dnsruby::SingleResolver#send_async(...)

Methods

External Aliases

packet_timeout -> query_timeout

Public Class methods

Can take a hash with the following optional keys :

  • :server
  • :port
  • :use_tcp
  • :ignore_truncation
  • :src_address
  • :src_port
  • :udp_size
  • :persistent_tcp
  • :persistent_udp
  • :tsig
  • :packet_timeout
  • :recurse

[Source]

     # File lib/Dnsruby/SingleResolver.rb, line 55
 55:     def initialize(*args)
 56:       arg=args[0]
 57:       @single_res_mutex = Mutex.new
 58:       @packet_timeout = Resolver::DefaultPacketTimeout
 59:       @query_timeout = @packet_timeout
 60:       @port = Resolver::DefaultPort
 61:       @udp_size = Resolver::DefaultUDPSize
 62:       @dnssec = Resolver::DefaultDnssec
 63:       @use_tcp = false
 64:       @tsig = nil
 65:       @ignore_truncation = false
 66:       @src_address        = '0.0.0.0'
 67:       @src_port        = [0]
 68:       @recurse = true
 69:       @persistent_udp = false
 70:       @persistent_tcp = false
 71:       @retry_times = 1
 72:       @retry_delay = 0
 73:       @single_resolvers = []
 74:       @configured = false
 75:         @config = Config.new
 76: 
 77:       if (arg==nil)
 78:         # Get default config
 79: #        @config = Config.new
 80: ##        @server = config.nameserver[0]
 81:       elsif (arg.kind_of?String)
 82:         @config.get_ready
 83:         @configured= true
 84:         @server=arg
 85:       elsif (arg.kind_of?Name)
 86:         @config.get_ready
 87:         @configured= true
 88:         @server=arg
 89:       elsif (arg.kind_of?Hash)
 90:         arg.keys.each do |attr|
 91:           begin
 92:             send(attr.to_s+"=", arg[attr])
 93:           rescue Exception
 94:             Dnsruby.log.error{"Argument #{attr} not valid\n"}
 95:           end
 96:           #        end
 97:         end
 98:       end
 99:             #Check server is IP
100: #            @server=Config.resolve_server(@server)
101:       isr = PacketSender.new(*args)
102: #      isr.server = @server
103:       @single_resolvers = [isr]
104: 
105:       #      ResolverRegister::register_single_resolver(self)
106:     end

Public Instance methods

Add the appropriate EDNS OPT RR for the specified packet. This is done automatically, unless you are using Resolver#send_plain_message

[Source]

     # File lib/Dnsruby/SingleResolver.rb, line 143
143:     def add_opt_rr(m)
144:       @single_res_mutex.synchronize {
145:         @single_resolvers[0].add_opt_rr(m)
146:       }
147:     end

[Source]

     # File lib/Dnsruby/SingleResolver.rb, line 136
136:     def packet_timeout=(t)
137:       @packet_timeout = t
138:       @query_timeout = t
139:     end
query_timeout=(t)

Alias for packet_timeout=

[Source]

     # File lib/Dnsruby/SingleResolver.rb, line 119
119:     def server
120: #      @single_res_mutex.synchronize {
121:       if (!@configured)
122:         @config.get_ready
123:         add_config_nameservers
124:       end
125:         return @single_resolvers[0].server
126: #      }
127:     end

[Source]

     # File lib/Dnsruby/SingleResolver.rb, line 108
108:     def server=(s)
109:       if (!@configured)
110:         @config.get_ready
111:         add_config_nameservers
112:       end
113:       isr = PacketSender.new(s)
114:             @single_res_mutex.synchronize {
115:       @single_resolvers = [isr]
116:             }
117:     end

[Validate]