Dear all, earlier today, I revoked my pending DVB-CI patch for spdu reassembly as I found a problem :-(
I now think I know what happens, I'd appreciate your opinion how to deal with it properly: a tdpu looks like header | body | trailer Depending on header info, the body may contain a fragment of an spdu. body_len is (no surprise) the body's length. I go to the beginning of the body and do the following for each and every message frag_msg = fragment_add_seq_next(tvb, offset, pinfo, SEQ_ID_TRANSPORT_LAYER, spdu_fragment_table, spdu_reassembled_table, body_len, hdr_tag == T_DATA_MORE ? 1 : 0); -> I put the current body into the fragementation mechanism. payload_tvb = process_reassembled_data(tvb, offset, pinfo, "Reassembled SPDU", frag_msg, &tpdu_frag_items, NULL, trans_tree); And see if things can be reassembled. If multiple fragments were reassembled, things work ok. payload_tvb contains (body_len #1 + ... + body_len #n) bytes. The problem occurs when there's no fragments, i.e. the message can be "reassembled" straight away. In this case, payload_tvb contains body | trailer ! To me this is quite surprising, I put in just the body and get body | trailer in return whereas usually, I get body1|body2|...|bodyN reassembled without any trailers (as expected). The code that causes this is in process_reassembled_data(), epan/reassemble.c } else { /* * No. * Return a tvbuff with the payload. */ next_tvb = tvb_new_subset_remaining(tvb, offset); Should this be changed to something like tvb_new_subset(tvb, <original offset>, <original len>, <orignal len>)? with the values that we supplied to fragment_add_seq_next()? (Needless to say that if this needs to be changed, I'm happy to look into it.) Thanks for your advice, Martin ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe