aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2008-07-30 14:50:17 +0000
committerAnders Broman <anders.broman@ericsson.com>2008-07-30 14:50:17 +0000
commit152973c876f8241e46cc06ab54e79dab4798fa22 (patch)
tree6b1bef0664c65aa31873850467960aac8df5b0c1
parent28bb6da642cf2a419798b5825597809a1668aacb (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.c20
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);
+ }
}
}