https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7149
--- Comment #6 from Cristian Constantin <const.crist@xxxxxxxxxxxxxx> 2012-04-19 08:45:05 PDT ---
(In reply to comment #4)
> (In reply to comment #1)
> > Created attachment 8272 [details]
> > fast conversation lookup by cacheing the latest found element
>
> This patch doesn't look correct to me.
>
> you added:
> + if((match->latest_found)&&(match->latest_found->setup_frame<=frame_num))
> + return match->latest_found;
>
> What if latest_found->setup_frame = 1?
> It'll be always true.
>
> So conversation_lookup_hashtable
> will return either match->last or match->latest_found.
>
> Please look at logic in for() loop.
>
> We also need to check if latest_found->{next->...->next}->setup_frame <=
> frame_num
>
>
> What we can do is:
> if((match->latest_found)&&(match->latest_found->setup_frame<=frame_num))
> conversation = latest_found;
> else
> conversation = match->next;
> for (; conversation; conversation = conversation->next) {
> /* ... *
>
> (and I'm not quite sure about it)
cristian: you are right. basically we need to check that this is the last
conversation in the chain list with a setup frame which is less than the
current one.
>
> Not O(1), sorry.
cristian: most likely not in general. but it seems that in this particular case
it is (i.e.: all the frames are loaded in increasing order, one after another).
should I post the patch having the changes suggested by you?
--
Configure bugmail: https://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.