Hi,
Guard creating a new conversation (conversation_new) by first checking if such
conversation already exists (find_conversation).
Then try to get the protocol data before creating and adding a new protocol data
structure.
Thanx,
Jaap
Jens Steinhauser wrote:
Hi,
I wrote a dissector for a protocol that runs atop of UDP and TCP. It
uses conversations to save information from "Configuration Frames" that
is needed to dissect the "Data Frames" later on. I also used the method
with 'tcp_dissect_pdus()' to handle segmented PDUs.
Everything works fine, except in the case when the frame that sets up
the conversation is segmented. Then the dissector is only called at the
first run for this frame (the output from "tshark -V" looks good, I also
used gdb to prove this), but not when I click the packet list to view
the details for this frame. The "Reassembled TCP" tab is missing and the
details pane only lists the "Frame, Ethernet, IP, and TCP" trees.
When I comment out the two lines:
conversation = conversation_new(pinfo->fd->num, ...);
conversation_add_proto_data(conversation, ...);
in the dissector, the dissector gets called every time I click the
packet list and the tree for my protocol is shown (consequently, the
dissection for the "Data Frames" isn't possible).
Has anyone also had such a problem when using conversations and TCP
reassembly at the same time?
Regards,
Jens