mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
Per listen(fd, backlog) rules, there is really no point accepting a SYN, sending a SYNACK, and dropping the following ACK packet if accept queue is full, because application is not draining accept queue fast enough. This behavior is fooling TCP clients that believe they established a flow, while there is nothing at server side. They might then send about 10 MSS (if using IW10) that will be dropped anyway while server is under stress. Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Neal Cardwell <ncardwell@google.com> Acked-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> (cherry picked from commit 5ea8ea2cb7f1d0db15762c9b0bb9e7330425a071) Backport for pass Android CTS CtsLibcoreTestCases: libcore.javax.net.ServerSocketFactoryTest#testCreateServerSocketWithPortNoBacklog Refer the comments on libcore/luni/src/test/java/libcore/javax/net/ServerSocketFactoryTest.java // This test may fail on kernel versions between 4.4 and 4.9, due to a kernel implementation // detail change. Backporting the following kernel change will fix the behavior. // http://b/31960002 // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5ea8ea2cb7f1d0db15762c9b0bb9e7330425a071 public void testCreateServerSocketWithPortNoBacklog() throws IOException { ServerSocket serverSocket = ServerSocketFactory.getDefault().createServerSocket(0, 1); testSocket(serverSocket, 1); } Change-Id: I9bb3531480f4942447d8d4eded110aa31bc7c031 Signed-off-by: Tao Huang <huangtao@rock-chips.com>