Subject: Re: recvmmsg() timeout behavior strangeness

From: Chris Friesen <[email-masked]>
Date: Thu, 10 Jan 2013 09:24:47 -0600

On 01/10/2013 04:04 AM, Steven Whitehouse wrote:

> Which timeout are we talking about? I've been copied into the thread
> without seeing the start of it.

The discussion is about the timeout parameter for the recvmmsg() call. 
Currently in the recvmmsg() code it only checks the timeout after 
__sys_recvmsg() returns, so if __sys_recvmsg() blocks forever we could 
end up essentially ignoring the timeout.

> If this is the rcvtimeo then afaik this is supposed to be the max time
> that the call waits for data, but is overridden by MSG_DONTWAIT, for
> example, on a per call basis. I'd assume that recvmmsg should work
> exactly like recvmsg in this case unless there is a good reason for it
> to differ,

recvmsg() doesn't have a timeout parameter, so it uses SO_RCVTIMEO.

recvmmsg() has an explicit timeout parameter but it doesn't look like it 
works properly and the documentation doesn't mention how it is supposed 
to interact with SO_RCVTIMEO.

Chris