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: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									efb9a8c28c
								
							
						
					
					
						commit
						518a09ef11
					
				| @ -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)) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user