aboutsummaryrefslogtreecommitdiffstats
path: root/packet-rpc.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-04-20 00:27:29 +0000
committerGuy Harris <guy@alum.mit.edu>2003-04-20 00:27:29 +0000
commit8140efea8e7036280b6bd0859df406d70c7d006e (patch)
tree6820d35aeafbc94301b5e19e36d034ac74e84f06 /packet-rpc.c
parentea29d0768a900d31a1a442695d5341b84dbc3654 (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.c13
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