Originally we didn't have a 'visited' flag so the conversations had
to be initialized before each pass through the packet list. However
this didn't solve the problem of what to do when a packet was selected
in the list. I tried to use the 'tree' variable to determine is this
was happening, however the 'tree' variable is set if a display or color
filter was on. After trying different methods to determine if a packet
was a new packet we added the 'visited' flag; I think you did that Guy
after we exchanged emails on the subject.
Do we have to call conversation_init during a rescan? I'm not sure, we
would probably have to check the dissectors that use conversations. It
would be best to code conversation dissectors to use the 'visited' flag
and avoid the extra CPU load during these rescans.
Jeff Foster
jfoste@xxxxxxxxxxxx
-----Original Message-----
From: Guy Harris [mailto:gharris@xxxxxxxxxxxx]
Sent: Tuesday, August 22, 2000 2:27 AM
To: Guy Harris
Cc: Richard Sharpe; ethereal-dev@xxxxxxxx
Subject: Re: [ethereal-dev] Why are we doing a conversation_init in
rescan_packets in file.c?
On Mon, Aug 21, 2000 at 11:42:14PM -0700, Guy Harris wrote:
> I suspect the correct fix is to ensure that dissectors only compute that
> sort of non-local information if the "visited" flag in the "frame_data"
> structure is 0, and that if they need that information to dissect the
> packet, they attach that information to the packet if "visited" is 0,
> and attempt to fetch it if "visited" is non-0.
I suspect that, at least for "protocol_init()", only those dissectors
that register init routines need have this done to them.