diff options
author | Guy Harris <guy@alum.mit.edu> | 2003-04-20 00:27:29 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2003-04-20 00:27:29 +0000 |
commit | 8140efea8e7036280b6bd0859df406d70c7d006e (patch) | |
tree | 6820d35aeafbc94301b5e19e36d034ac74e84f06 /packet-rpc.c | |
parent | ea29d0768a900d31a1a442695d5341b84dbc3654 (diff) |
Add a "fragment_add_multiple_ok()" routine that skips the check for a
fragment having been added already. In protocols using the ONC
RPC-over-TCP record-marking mechanism (RPC-over-TCP and NDMP), there can
be more than one record-marking-layer fragment in a single TCP segment,
and thus can be more than one fragment in a frame being added to a given
higher-level packet.
svn path=/trunk/; revision=7508
Diffstat (limited to 'packet-rpc.c')
-rw-r--r-- | packet-rpc.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/packet-rpc.c b/packet-rpc.c index 9dd409afed..d05cae3dcc 100644 --- a/packet-rpc.c +++ b/packet-rpc.c @@ -2,7 +2,7 @@ * Routines for rpc dissection * Copyright 1999, Uwe Girlich <Uwe.Girlich@philosys.de> * - * $Id: packet-rpc.c,v 1.117 2003/04/18 06:34:42 sahlberg Exp $ + * $Id: packet-rpc.c,v 1.118 2003/04/20 00:27:29 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -2651,8 +2651,8 @@ dissect_rpc_fragment(tvbuff_t *tvb, int offset, packet_info *pinfo, /* * Start defragmentation. */ - ipfd_head = fragment_add(tvb, offset + 4, pinfo, - rfk->start_seq, rpc_fragment_table, + ipfd_head = fragment_add_multiple_ok(tvb, offset + 4, + pinfo, rfk->start_seq, rpc_fragment_table, rfk->offset, len - 4, TRUE); /* @@ -2700,14 +2700,15 @@ dissect_rpc_fragment(tvbuff_t *tvb, int offset, packet_info *pinfo, * a record. This means we must defragment it. * Add it to the defragmentation lists. */ - ipfd_head = fragment_add(tvb, offset + 4, pinfo, + ipfd_head = fragment_add_multiple_ok(tvb, offset + 4, pinfo, rfk->start_seq, rpc_fragment_table, rfk->offset, len - 4, !(rpc_rm & RPC_RM_LASTFRAG)); if (ipfd_head == NULL) { /* - * fragment_add() returned NULL, This means that - * defragmentation is not completed yet. + * fragment_add_multiple_ok() returned NULL. + * This means that defragmentation is not + * completed yet. * * We must add an entry to the hash table with * the sequence number following this fragment |