51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/rubydns/handler.rb', line 51
def receive_data(data)
@buffer ||= StringIO.new
@buffer.write(data)
if @length == nil
if (@buffer.size - @processed) < 2
raise LengthError.new("Malformed message smaller than two bytes received")
end
@length = @buffer.string[@processed, 2].unpack('n')[0]
@processed += 2
end
if (@buffer.size - @processed) >= @length
data = @buffer.string[@processed, @length]
UDPHandler.process(@server, data) do |result|
self.send_data([result.size].pack('n'))
self.send_data(result)
end
@processed += @length
@length = nil
end
end
|