diff options
author | Guy Harris <guy@alum.mit.edu> | 2000-08-24 06:19:53 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2000-08-24 06:19:53 +0000 |
commit | 47d5cfab522706c1cadfb1598325a44e77f56815 (patch) | |
tree | 954b178ae3a1d9966988474fe8b176a519a470e3 /file.c | |
parent | d93c1854b85b5484797cb97e884604a268b6573f (diff) |
Instead of keeping in the information about an RPC call a count of the
number of replies seen, keep the frame number of the first request seen
for that call and the first reply seen for that call. Use that to
determine whether a request or reply is a duplicate or not.
That means that we don't have to reset the table of RPC calls on a
rescan of the capture (which didn't even fix all the cases where we'd
have misreported the original call or reply as a duplicate due to having
seen it once on the initial pass through the file and once again when,
for example, the user clicked on the packet); doing so causes plenty of
other problems, so don't do that - and don't clear the "visited" flag on
frames on a rescan, either, as that's only done because we were clearing
out conversations and calling all protocols' "init" routines.
As a free bonus, this means that, for a reply, we know what frame the
request was in; put that information into the protocol tree for the
reply, snoop-style.
Make the table of RPC call information, and the routines that manipulate
it, static to "packet-rpc.c"; nobody outside "packet-rpc.c" uses them.
svn path=/trunk/; revision=2358
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 15 |
1 files changed, 1 insertions, 14 deletions
@@ -1,7 +1,7 @@ /* file.c * File I/O routines * - * $Id: file.c,v 1.209 2000/08/21 21:24:01 deniel Exp $ + * $Id: file.c,v 1.210 2000/08/24 06:19:51 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -892,15 +892,6 @@ rescan_packets(capture_file *cf, const char *action, gboolean refilter) rebuild the clist, however. */ selected_row = -1; - /* We need to re-initialize all the state information that protocols - keep, because we're making a fresh pass through all the packets. */ - - /* Initialize the table of conversations. */ - conversation_init(); - - /* Initialize protocol-specific variables */ - init_all_protocols(); - /* Freeze the packet list while we redo it, so we don't get any screen updates while it happens. */ gtk_clist_freeze(GTK_CLIST(packet_list)); @@ -966,10 +957,6 @@ rescan_packets(capture_file *cf, const char *action, gboolean refilter) count++; - /* Since all state for the frame was destroyed, mark the frame - * as not visited. */ - fdata->flags.visited = 0; - wtap_seek_read (cf->wth, fdata->file_off, &cf->pseudo_header, cf->pd, fdata->cap_len); |