summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2016-10-26 09:27:57 -0700
committerTao Huang <huangtao@rock-chips.com>2017-12-21 10:42:52 +0800
commit702d673e9e74de360a9635536b8ac3bd1a48bb68 (patch)
tree05fd8beac5b6d018d526c9192042b1e0e820f1d0 /include
parent5eb7acedd4a5de351daee401a9fa2c09d2566afd (diff)
BACKPORT: tcp/dccp: drop SYN packets if accept queue is full
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>
Diffstat (limited to 'include')
-rw-r--r--include/net/inet_connection_sock.h5
1 files changed, 0 insertions, 5 deletions
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
index 49dcad4fe99e..72599bbc8255 100644
--- a/include/net/inet_connection_sock.h
+++ b/include/net/inet_connection_sock.h
@@ -289,11 +289,6 @@ static inline int inet_csk_reqsk_queue_len(const struct sock *sk)
return reqsk_queue_len(&inet_csk(sk)->icsk_accept_queue);
}
-static inline int inet_csk_reqsk_queue_young(const struct sock *sk)
-{
- return reqsk_queue_len_young(&inet_csk(sk)->icsk_accept_queue);
-}
-
static inline int inet_csk_reqsk_queue_is_full(const struct sock *sk)
{
return inet_csk_reqsk_queue_len(sk) >= sk->sk_max_ack_backlog;