On Thu, Apr 18, 2013 at 1:11 PM, Guy Harris <guy@xxxxxxxxxxxx> wrote:
>
> On Apr 18, 2013, at 9:28 AM, Evan Huus <eapache@xxxxxxxxx> wrote:
>
>> - Our reassembly code is a bit of a mess anyways, as Guy's recent
>> commit indicates.
>
> ...and that commit doesn't include another thing I started working on (but haven't done much on yet):
>
> The "reassembled" hash table looks up by endpoints and an ID, but there's no guarantee that there won't be *more than one* instance of that ID in a given flow between the two endpoints in question, so that lookup needs to take into account the frame number as well.
That hadn't even occurred to me; I was thinking more of the fact that
we don't have a separate 'head' structure for reassembly chains and
just assume certain fields are set/unset based on whether the
structure is first in the list or not.
> (A bunch of the stuff I've been doing to the reassembly code was to fix issues that showed up when doing some regression testing of some changes to other code; there's a DTLS file that's especially good at finding all the "funny stuff" in reassembly code, in part because *every fragment* has a "reassembled" length, and hilarity ensues if they don't have the same values.)
Sounds like fun :P
Honestly a total from-scratch rewrite is starting to look appealing
from a code-cleanliness perspective, though it would probably still be
an inefficient use of time from an engineering standpoint.
Evan