diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2010-02-10 15:26:18 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-12 19:51:10 -0500 |
commit | 55d955902a7f78e3e7c9ddbc71a4a050d9d44810 (patch) | |
tree | e56d33b78b483476b9560370dcf37db7c40c886a | |
parent | cfc0861ba32643c63901832a583054bea0445961 (diff) |
dccp: support for passing MSG_TRUNC
DCCP is datagram-oriented but lacks UDP's support for MSG_TRUNC as defined in
recvmsg(2)/recv(2). Hence the following 'Hello world\0' receiver
len = recv(fd, buf, 10, MSG_PEEK | MSG_TRUNC);
wrongly (always) returns 10, while in UDP it returns 12 as expected.
This patch adds the missing MSG_TRUNC support to recvmsg().
Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/dccp/proto.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index 671cd1413d59..85ec1cb7fd41 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c | |||
@@ -835,6 +835,8 @@ verify_sock_status: | |||
835 | len = -EFAULT; | 835 | len = -EFAULT; |
836 | break; | 836 | break; |
837 | } | 837 | } |
838 | if (flags & MSG_TRUNC) | ||
839 | len = skb->len; | ||
838 | found_fin_ok: | 840 | found_fin_ok: |
839 | if (!(flags & MSG_PEEK)) | 841 | if (!(flags & MSG_PEEK)) |
840 | sk_eat_skb(sk, skb, 0); | 842 | sk_eat_skb(sk, skb, 0); |