aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-sndcp.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2007-09-11 16:59:57 +0000
committerAnders Broman <anders.broman@ericsson.com>2007-09-11 16:59:57 +0000
commit84553b468c1c59f912cdb4979191cac4737e1756 (patch)
tree25f02124c7a718f7663f9b5d542416ce561ca0de /epan/dissectors/packet-sndcp.c
parent0d0799c3061f1d55dcba0c8721c7bb3710b19937 (diff)
From cyrille colin:
PATCH : SNDCP reassembly fails / overlaps when same NPDU number in another call http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1755 svn path=/trunk/; revision=22846
Diffstat (limited to 'epan/dissectors/packet-sndcp.c')
-rw-r--r--epan/dissectors/packet-sndcp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/epan/dissectors/packet-sndcp.c b/epan/dissectors/packet-sndcp.c
index cf7504caa5..2d1daa6b67 100644
--- a/epan/dissectors/packet-sndcp.c
+++ b/epan/dissectors/packet-sndcp.c
@@ -102,10 +102,13 @@ static dissector_handle_t ip_handle;
/* reassembly of N-PDU
*/
static GHashTable *npdu_fragment_table = NULL;
+static GHashTable *sndcp_reassembled_table = NULL;
+
static void
sndcp_defragment_init(void)
{
fragment_table_init(&npdu_fragment_table);
+ reassembled_table_init(&sndcp_reassembled_table);
}
/* value strings
@@ -331,8 +334,8 @@ dissect_sndcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
pinfo->fragmented = TRUE;
if (unack)
- fd_npdu = fragment_add_seq(tvb, offset, pinfo, npdu,
- npdu_fragment_table, segment, len, more_frags);
+ fd_npdu = fragment_add_seq_check(tvb, offset, pinfo, npdu,
+ npdu_fragment_table, sndcp_reassembled_table, segment, len, more_frags);
else
fd_npdu = fragment_add(tvb, offset, pinfo, npdu,
npdu_fragment_table, offset, len, more_frags);