diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2010-02-10 20:26:18 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-12 16:51:10 -0800 |
commit | 55d955902a7f78e3e7c9ddbc71a4a050d9d44810 (patch) | |
tree | e56d33b78b483476b9560370dcf37db7c40c886a | |
parent | cfc0861ba32643c63901832a583054bea0445961 (diff) | |
download | linux-3.10-55d955902a7f78e3e7c9ddbc71a4a050d9d44810.tar.gz linux-3.10-55d955902a7f78e3e7c9ddbc71a4a050d9d44810.tar.bz2 linux-3.10-55d955902a7f78e3e7c9ddbc71a4a050d9d44810.zip |
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 671cd1413d5..85ec1cb7fd4 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c @@ -835,6 +835,8 @@ verify_sock_status: len = -EFAULT; break; } + if (flags & MSG_TRUNC) + len = skb->len; found_fin_ok: if (!(flags & MSG_PEEK)) sk_eat_skb(sk, skb, 0); |