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 /net/dccp | |
| 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>
Diffstat (limited to 'net/dccp')
| -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); |
