netdev
[Top] [All Lists]

Re: asymmetry with MSG_DONTWAIT in sendmsg() and recvmsg()

To: aeb@xxxxxx
Subject: Re: asymmetry with MSG_DONTWAIT in sendmsg() and recvmsg()
From: Chris Friesen <cfriesen@xxxxxxxxxxxxxxxxxx>
Date: Thu, 08 Jul 2004 12:49:28 -0400
Cc: Andi Kleen <ak@xxxxxxx>, Michael T Kerrisk <mtk-lists@xxxxxxx>, netdev@xxxxxxxxxxx
In-reply-to: <20040708162703.GA12934@xxxxxxxxxxxxx>
References: <20040708162703.GA12934@xxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040113
Andi Kleen wrote:
On Thu, Jul 08, 2004 at 12:21:35PM -0400, Chris Friesen wrote:
 > Michael T Kerrisk wrote:
 >
 > >MSG_DONTWAIT should also work with recvmsg().
 >
> Hmm... Just tried it with a DGRAM socket, and it seems to work. Any ideas
 > why its not in the man pages?

Nobody ever added it? Just send a patch to aeb@xxxxxx

Sending patch as suggested. Fundamentally, the delta is as follows, I've included an attachment with what I hope are the proper formatting codes (copied from send(2)).

--- recv.man    2004-07-08 15:43:17.000000000 -0400
+++ recv2.man   2004-07-08 15:47:29.000000000 -0400
@@ -67,6 +67,11 @@
               disconnect occurs, or the next data to be received is of a  dif-
               ferent type than that returned.

+       MSG_DONTWAIT
+              Enables  non-blocking  operation;  if the operation would block,
+              EAGAIN is returned (this can also be enabled  using  the  O_NON-
+              BLOCK with the F_SETFL fcntl(2)).
+
        MSG_NOSIGNAL
               This  flag  turns  off raising of SIGPIPE on stream sockets when
               the other end disappears.


Note also that there is a mention of MSG_DONTWAIT in the msg_flags field in the msghdr. It gives the impression that one can *set* that field to cause the non-blocking behaviour. My understanding is that the msg_flags field is a return value only. Perhaps that portion should be reworded as well.

Chris

Attachment: man2recv.diff
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>