# File lib/rubydns/resolver.rb, line 232 def post_init data = @request.packet send_data([data.bytesize].pack('n')) send_data data end
# File lib/rubydns/resolver.rb, line 239 def receive_data(data) # We buffer data until we've received the entire packet: @buffer ||= BinaryStringIO.new @buffer.write(data) # If we've received enough data and we haven't figured out the length yet... if @length == nil and @buffer.size > 2 # Extract the length from the buffer: @length = @buffer.string.byteslice(0, 2).unpack('n')[0] end # If we know what the length is, and we've got that much data, we can decode the message: if @length != nil and @buffer.size >= (@length + 2) data = @buffer.string.byteslice(2, @length) message = RubyDNS::decode_message(data) @request.process_response!(message) end # If we have received more data than expected, should this be an error? rescue Resolv::DNS::DecodeError => error @request.process_response!(error) end
Generated with the Darkfish Rdoc Generator 2.