Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def root?
- true
- end
- def query_udp(packet, packet_data)
- ans = nil
- response = ""
- @config[:nameservers].each do |ns|
- begin
- @config[:udp_timeout].timeout do
- @logger.info "Contacting nameserver #{ns} port #{@config[:port]}"
- ans = if ns.ipv6?
- socket = UDPSocket.new(Socket::AF_INET6)
- socket.bind(@config[:source_address_inet6].to_s,@config[:source_port])
- socket.send(packet_data, 0, ns.to_s, @config[:port])
- socket.recvfrom(@config[:packet_size])
- else
- socket = UDPSocket.new
- socket.bind(@config[:source_address].to_s,@config[:source_port])
- socket.send(packet_data, 0, ns.to_s, @config[:port])
- socket.recvfrom(@config[:packet_size])
- end
- end
- break if ans
- rescue TimeoutError
- @logger.warn "Nameserver #{ns} not responding within UDP timeout, trying next one"
- next
- ensure
- socket.close
- end
- end
- ans
- end
Advertisement
Add Comment
Please, Sign In to add comment