Re: recvmmsg() timeout behavior strangeness [RESEND]
From: Florian Westphal <fw@strlen.de>
Date: 2014-05-03 11:29:14
Also in:
linux-man, lkml
From: Florian Westphal <fw@strlen.de>
Date: 2014-05-03 11:29:14
Also in:
linux-man, lkml
Michael Kerrisk (man-pages) [off-list ref] wrote:
Reinvestigating the problem, I see that I got my description of the behavior slightly wrong, although the fundamental problem remains. Here's my improved formulation:
[..]
Since the timeout is only checked after the arrival of each datagram, we can have scenarios like the following: 0. Assume a timeout of 10 (T) seconds, that vlen is 5, and the call is made at time X 1. First datagram arrives at time X+2. 2. Second datagram arrives at time X+4 secs 3. Third datagram arrives at time X+6 secs 4. No more datagrams arrive. In this case, the call blocks forever. It hardly seems that this could be intended behavior. The problem, of course is that the timeout is checked only after receipt of a datagram.
Isn't that what MSG_WAITFORONE is supposed to solve?