Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 518a09ef authored by David S. Miller's avatar David S. Miller
Browse files

tcp: Fix recvmsg MSG_PEEK influence of blocking behavior.



Vito Caputo noticed that tcp_recvmsg() returns immediately from
partial reads when MSG_PEEK is used.  In particular, this means that
SO_RCVLOWAT is not respected.

Simply remove the test.  And this matches the behavior of several
other systems, including BSD.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent efb9a8c2
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1374,8 +1374,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
			    sk->sk_state == TCP_CLOSE ||
			    (sk->sk_shutdown & RCV_SHUTDOWN) ||
			    !timeo ||
			    signal_pending(current) ||
			    (flags & MSG_PEEK))
			    signal_pending(current))
				break;
		} else {
			if (sock_flag(sk, SOCK_DONE))