[Haskell-cafe] network package and SIGVTALRM

Andrey Sverdlichenko blaze at ruddy.ru
Wed Jul 13 18:10:00 UTC 2016

On Wed, Jul 13, 2016 at 3:14 AM Ruben Astudillo <ruben.astud at gmail.com>

> Right on the nail. I played a bit with tcpdump/wireshark to see I was
> just sending 0 length ACKs and multiple 4 byte messages joined on a
> single packet. Seems TCP buffers tiny packets using a strategy called
> Nagle's algorithm and thus joined all my packets on a bufferzone until a
> threeshold. Then it sent them all at once, making the other end crazy.

This looks a bit scary. It should not matter if replies are merged or not.
By any chance, don't your code use recv with some large max buffer size,
but expect to get only 4 bytes because this is how much receiver sends each
time? If so, change it to read 4 bytes only, and handle the case when less
than 4 bytes are out. TCP do not preserve message boundaries and you can
expect reads to return data in arbitrary sized chunks.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160713/798c7cff/attachment.html>

More information about the Haskell-Cafe mailing list