-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Graham Bloice wrote: > I've been attempting to add tcp fragment reassembly using > tcp_dissect_pdus() to an existing dissector that already used the epan > reassembly code for an internal part of the protocol. > > However it seems that when I add the tcp_dissect_pdus() call then the > other reassembly stops working. The call to fragment_add_seq_check() > never returns a non-null fragment_data pointer. > > I grep'd all the other dissectors and didn't find any using a > combination of both methods. > > Is there a problem with using both, or have I just gone wrong somewhere? >
I've now resolved my issues with the combination of the two reassembly options, and the problem was down to errors in my dissector. In doing so, I ran across a couple of documentation issues: In the Developers Guide, Section 9.3, Example 9.17. Decompressing data packets for dissection The code calls tvb_set_free_cb() for the newly created next_tvb. This is unnecessary as the call to tvb_set_child_real_data() adds next_tvb to the chained list of tvb, thus ensuring that next_tvb is correctly deleted. In fact when I had the call in, Visual Studio kept breaking deep down in ntdll.dll, probably because of a double free every time the main tvb was deleted. In README.developer, para 2..2.7 The example conversation code doesn't assign the result of conversation_new() back into the conversation variable. I've attached patches for these two items. - -- Regards, Graham Bloice Software Developer Trihedral UK Limited Tel: +44 (0)7002 874433 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFujSNcs4xxHO/MtURAhePAKCpo8vEg5zQq7wJ+t6u/qonrO8mHgCfSe85 eSti+m46GPuNkkT7jqSaM8o= =MiNy -----END PGP SIGNATURE-----
README.developer.patch.sig
Description: Binary data
WSDG_chapter_dissection.xml.patch.sig
Description: Binary data
Index: doc/README.developer =================================================================== --- doc/README.developer (revision 20501) +++ doc/README.developer (working copy) @@ -2809,7 +2809,7 @@ /* create the conversation with your data pointer */ - conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype, + conversation = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype, pinfo->srcport, pinfo->destport, 0); conversation_add_proto_data(conversation, my_proto, (void *)data_ptr); }
Index: docbook/wsdg_src/WSDG_chapter_dissection.xml =================================================================== --- docbook/wsdg_src/WSDG_chapter_dissection.xml (revision 20501) +++ docbook/wsdg_src/WSDG_chapter_dissection.xml (working copy) @@ -682,7 +682,6 @@ next_tvb = tvb_new_real_data(decompressed_buffer, orig_size, orig_size); tvb_set_child_real_data_tvbuff(tvb, next_tvb); add_new_data_source(pinfo, next_tvb, "Decompressed Data"); - tvb_set_free_cb(next_tvb, g_free); } else { next_tvb = tvb_new_subset(tvb, offset, -1, -1); }
_______________________________________________ Wireshark-dev mailing list Wireshark-dev@wireshark.org http://www.wireshark.org/mailman/listinfo/wireshark-dev