diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-03-06 14:21:05 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-03-06 14:21:05 -0500 |
commit | 64a146513f8f12ba204b7bf5cb7e9505594ead42 (patch) | |
tree | 849f875501ac6f08cf309c5b13cf21ed687974e2 | |
parent | 187f5f84ef14a07dccf5f4503099708d60f6a724 (diff) |
[NET]: Revert incorrect accept queue backlog changes.
This reverts two changes:
8488df894d05d6fa41c2bd298c335f944bb0e401
248f06726e866942b3d8ca8f411f9067713b7ff8
A backlog value of N really does mean allow "N + 1" connections
to queue to a listening socket. This allows one to specify
"0" as the backlog and still get 1 connection.
Noticed by Gerrit Renker and Rick Jones.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/sock.h | 2 | ||||
-rw-r--r-- | net/unix/af_unix.c | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 849c7df23181..2c7d60ca3548 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -426,7 +426,7 @@ static inline void sk_acceptq_added(struct sock *sk) | |||
426 | 426 | ||
427 | static inline int sk_acceptq_is_full(struct sock *sk) | 427 | static inline int sk_acceptq_is_full(struct sock *sk) |
428 | { | 428 | { |
429 | return sk->sk_ack_backlog >= sk->sk_max_ack_backlog; | 429 | return sk->sk_ack_backlog > sk->sk_max_ack_backlog; |
430 | } | 430 | } |
431 | 431 | ||
432 | /* | 432 | /* |
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 51ca4383c388..606971645b33 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
@@ -934,7 +934,7 @@ static long unix_wait_for_peer(struct sock *other, long timeo) | |||
934 | 934 | ||
935 | sched = !sock_flag(other, SOCK_DEAD) && | 935 | sched = !sock_flag(other, SOCK_DEAD) && |
936 | !(other->sk_shutdown & RCV_SHUTDOWN) && | 936 | !(other->sk_shutdown & RCV_SHUTDOWN) && |
937 | (skb_queue_len(&other->sk_receive_queue) >= | 937 | (skb_queue_len(&other->sk_receive_queue) > |
938 | other->sk_max_ack_backlog); | 938 | other->sk_max_ack_backlog); |
939 | 939 | ||
940 | unix_state_runlock(other); | 940 | unix_state_runlock(other); |
@@ -1008,7 +1008,7 @@ restart: | |||
1008 | if (other->sk_state != TCP_LISTEN) | 1008 | if (other->sk_state != TCP_LISTEN) |
1009 | goto out_unlock; | 1009 | goto out_unlock; |
1010 | 1010 | ||
1011 | if (skb_queue_len(&other->sk_receive_queue) >= | 1011 | if (skb_queue_len(&other->sk_receive_queue) > |
1012 | other->sk_max_ack_backlog) { | 1012 | other->sk_max_ack_backlog) { |
1013 | err = -EAGAIN; | 1013 | err = -EAGAIN; |
1014 | if (!timeo) | 1014 | if (!timeo) |
@@ -1381,7 +1381,7 @@ restart: | |||
1381 | } | 1381 | } |
1382 | 1382 | ||
1383 | if (unix_peer(other) != sk && | 1383 | if (unix_peer(other) != sk && |
1384 | (skb_queue_len(&other->sk_receive_queue) >= | 1384 | (skb_queue_len(&other->sk_receive_queue) > |
1385 | other->sk_max_ack_backlog)) { | 1385 | other->sk_max_ack_backlog)) { |
1386 | if (!timeo) { | 1386 | if (!timeo) { |
1387 | err = -EAGAIN; | 1387 | err = -EAGAIN; |