diff options
author | Anders Broman <anders.broman@ericsson.com> | 2008-07-30 14:50:17 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2008-07-30 14:50:17 +0000 |
commit | 152973c876f8241e46cc06ab54e79dab4798fa22 (patch) | |
tree | 6b1bef0664c65aa31873850467960aac8df5b0c1 | |
parent | 28bb6da642cf2a419798b5825597809a1668aacb (diff) |
From Gerhard Olsson:
X25 reassembly fragment table and dissected proto presented for all X25 packets
svn path=/trunk/; revision=25874
-rw-r--r-- | epan/dissectors/packet-x25.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c index 197dbc2ac1..6eb705877e 100644 --- a/epan/dissectors/packet-x25.c +++ b/epan/dissectors/packet-x25.c @@ -2357,8 +2357,14 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, x25_reassembled_table, payload_len, m_bit_set); pinfo->fragmented = m_bit_set; - - if (fd_head) { + + /* Fragment handling is not adapted to handle several x25 + * packets in the same frame. This is common with XOT and + * shorter packet sizes. + * Therefore, fragment_add_seq_next seem to always return fd_head + * A fix to use m_bit_set to only show fragments for last pkt + */ + if (!m_bit_set && fd_head) { if (fd_head->next) { proto_item *frag_tree_item; @@ -2368,10 +2374,12 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, fd_head->len); tvb_set_child_real_data_tvbuff(tvb, next_tvb); add_new_data_source(pinfo, next_tvb, "Reassembled X.25"); - show_fragment_seq_tree(fd_head, - &x25_frag_items, - x25_tree, - pinfo, next_tvb, &frag_tree_item); + if (x25_tree) { + show_fragment_seq_tree(fd_head, + &x25_frag_items, + x25_tree, + pinfo, next_tvb, &frag_tree_item); + } } } |