class Async::DNS::GenericHandler
Attributes
server[R]
socket[R]
Public Class Methods
new(server, socket)
click to toggle source
# File lib/async/dns/handler.rb, line 27 def initialize(server, socket) @server = server @socket = socket @logger = @server.logger || Console.logger end
Public Instance Methods
error_response(query = nil, code = Resolv::DNS::RCode::ServFail)
click to toggle source
# File lib/async/dns/handler.rb, line 37 def error_response(query = nil, code = Resolv::DNS::RCode::ServFail) # Encoding may fail, so we need to handle this particular case: server_failure = Resolv::DNS::Message::new(query ? query.id : 0) server_failure.qr = 1 server_failure.opcode = query ? query.opcode : 0 server_failure.aa = 1 server_failure.rd = 0 server_failure.ra = 0 server_failure.rcode = code # We can't do anything at this point... return server_failure end
process_query(data, options)
click to toggle source
# File lib/async/dns/handler.rb, line 53 def process_query(data, options) @logger.debug "<> Receiving incoming query (#{data.bytesize} bytes) to #{self.class.name}..." query = nil begin query = Async::DNS::decode_message(data) return @server.process_query(query, options) rescue StandardError => error @logger.error(self, error) return error_response(query) end end