On Jan 11, 2008, at 10:50 AM, Matthew Toseland wrote:
>>>> Log:
>>>> trivial: comments, logging, readability
>>>
>>> Doesn't look that way to me e.g. timeAllSent affects when we kill
>>> the
>>> transfer. What's going on here?
>>
>> There was more than one problem with timeAllSent... there are a
>> number
>> of commits regarding the block transmittion/reception. This change
>> actually is trivial because the only time that timeAllSent was set is
>> on breaking out of the loop, so I moved it to the break statement so
>> that one can see that.
>
> And what about removing else if(_allSent) { ... return } ?
It was already checked before that conditional statement so I replaced
it with an unknown-message check:
if (_sendComplete)
return;
if (msg==this_type) {
do(that_thing);
} else if (msg==that_type)
do(the_other_thing);
} else if (_sendComplete) {
return;
}
But... even the first check is ultimately removed in r17004 to make
_sendComplete *only* a signal from the blocking-send() thread to the
_senderThread; eliminating a major race condition (if _senderThread
was the first to notice that (1) client disconnected, or (2) prb
aborted, all that the send() thread knew was "_sendComplete", when if
it would just loop again it would notice the exact condition itself).
It may be easier to read the final version of the transmitter /
receiver, they are a lot more readable now, and I tested them with 10%
packet loss and they worked fine.
--
Robert Hailey
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://emu.freenetproject.org/pipermail/devl/attachments/20080111/0182b014/attachment.html>