Guest User

Untitled

a guest
Jan 26th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.99 KB | None | 0 0
  1. def root?
  2.   true
  3. end
  4.  
  5. def query_udp(packet, packet_data)
  6.   ans = nil
  7.   response = ""
  8.   @config[:nameservers].each do |ns|
  9.     begin
  10.       @config[:udp_timeout].timeout do
  11.         @logger.info "Contacting nameserver #{ns} port #{@config[:port]}"
  12.         ans = if ns.ipv6?
  13.           socket = UDPSocket.new(Socket::AF_INET6)
  14.           socket.bind(@config[:source_address_inet6].to_s,@config[:source_port])
  15.           socket.send(packet_data, 0, ns.to_s, @config[:port])
  16.           socket.recvfrom(@config[:packet_size])                
  17.         else
  18.           socket = UDPSocket.new
  19.           socket.bind(@config[:source_address].to_s,@config[:source_port])
  20.           socket.send(packet_data, 0, ns.to_s, @config[:port])
  21.           socket.recvfrom(@config[:packet_size])
  22.         end
  23.       end
  24.       break if ans
  25.     rescue TimeoutError
  26.       @logger.warn "Nameserver #{ns} not responding within UDP timeout, trying next one"
  27.       next
  28.     ensure
  29.       socket.close
  30.     end
  31.   end
  32.   ans
  33. end
Advertisement
Add Comment
Please, Sign In to add comment