From: Erik H. <eri...@er...> - 2012-10-31 16:07:49
|
I think i'm closing in on the problem. During retransmission of fragments, if we have not yet allocated a buffer (that's only done when FIRST_FRAGMENT is received), and receive a fragment that is not FIRST_FRAGMENT. We will fall through the tipc_link_recv_fragment function, free the fragment buffer and return zero. http://lxr.free-electrons.com/source/net/tipc/link.c#L2506 tipc_recv_msg (in the link layer) will then continue, believing that the fragment have been put in a reassembly queue, and the (now lost) message will be acked. What i have yet to discover is _why_ this occurs, packets should always be put on the deferred queue if they are not 'next_in_no', and the deferred packets should only be replayed back on the receive loop when we have all previous packets.. //E |