lib/packetgen/packet.rb in packetgen-2.1.4 vs lib/packetgen/packet.rb in packetgen-2.2.0
- old
+ new
@@ -383,11 +383,13 @@
hdr = hklass.new
# #read may return another object (more specific class)
hdr = hdr.read(binary_str)
# First header is found when:
# * for one known header,
+ # * +#parse?+ is true
# * it exists a known binding with a upper header
+ next unless hdr.parse?
search_header(hdr) do
first_header = hklass.to_s.gsub(/.*::/, '')
end
break unless first_header.nil?
end
@@ -402,19 +404,19 @@
break if last_known_hdr.body.empty?
search_header(last_known_hdr) do |nh|
str = last_known_hdr.body
nheader = nh.new
nheader = nheader.read(str)
+ next unless nheader.parse?
add_header nheader, parsing: true
- nheader.dissect if nheader.respond_to? :dissect
end
decode_packet_bottom_up = (@headers.last != last_known_hdr)
end
end
def search_header(hdr)
hdr.class.known_headers.each do |nh, bindings|
- if bindings.check?(hdr) and hdr.parse?
+ if bindings.check?(hdr)
yield nh
break
end
end
end