tipc: add SO_RCVLOWAT support to stream socket receive path
Add support for the SO_RCVLOWAT socket option to TIPC's stream socket type. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
f813809252
Коммит
3720d40b20
|
@ -1026,9 +1026,8 @@ static int recv_stream(struct kiocb *iocb, struct socket *sock,
|
|||
struct sk_buff *buf;
|
||||
struct tipc_msg *msg;
|
||||
unsigned int sz;
|
||||
int sz_to_copy;
|
||||
int sz_to_copy, target, needed;
|
||||
int sz_copied = 0;
|
||||
int needed;
|
||||
char __user *crs = m->msg_iov->iov_base;
|
||||
unsigned char *buf_crs;
|
||||
u32 err;
|
||||
|
@ -1050,6 +1049,8 @@ static int recv_stream(struct kiocb *iocb, struct socket *sock,
|
|||
goto exit;
|
||||
}
|
||||
|
||||
target = sock_rcvlowat(sk, flags & MSG_WAITALL, buf_len);
|
||||
|
||||
restart:
|
||||
|
||||
/* Look for a message in receive queue; wait if necessary */
|
||||
|
@ -1138,7 +1139,7 @@ restart:
|
|||
|
||||
if ((sz_copied < buf_len) && /* didn't get all requested data */
|
||||
(!skb_queue_empty(&sk->sk_receive_queue) ||
|
||||
(flags & MSG_WAITALL)) && /* and more is ready or required */
|
||||
(sz_copied < target)) && /* and more is ready or required */
|
||||
(!(flags & MSG_PEEK)) && /* and aren't just peeking at data */
|
||||
(!err)) /* and haven't reached a FIN */
|
||||
goto restart;
|
||||
|
|
Загрузка…
Ссылка в новой задаче