diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-03-06 11:21:05 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-03-06 11:21:05 -0800 |
commit | 64a146513f8f12ba204b7bf5cb7e9505594ead42 (patch) | |
tree | 849f875501ac6f08cf309c5b13cf21ed687974e2 | |
parent | 187f5f84ef14a07dccf5f4503099708d60f6a724 (diff) | |
download | linux-stable-64a146513f8f12ba204b7bf5cb7e9505594ead42.tar.gz linux-stable-64a146513f8f12ba204b7bf5cb7e9505594ead42.tar.bz2 linux-stable-64a146513f8f12ba204b7bf5cb7e9505594ead42.zip |
[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) static inline int sk_acceptq_is_full(struct sock *sk) { - return sk->sk_ack_backlog >= sk->sk_max_ack_backlog; + return sk->sk_ack_backlog > sk->sk_max_ack_backlog; } /* 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) sched = !sock_flag(other, SOCK_DEAD) && !(other->sk_shutdown & RCV_SHUTDOWN) && - (skb_queue_len(&other->sk_receive_queue) >= + (skb_queue_len(&other->sk_receive_queue) > other->sk_max_ack_backlog); unix_state_runlock(other); @@ -1008,7 +1008,7 @@ restart: if (other->sk_state != TCP_LISTEN) goto out_unlock; - if (skb_queue_len(&other->sk_receive_queue) >= + if (skb_queue_len(&other->sk_receive_queue) > other->sk_max_ack_backlog) { err = -EAGAIN; if (!timeo) @@ -1381,7 +1381,7 @@ restart: } if (unix_peer(other) != sk && - (skb_queue_len(&other->sk_receive_queue) >= + (skb_queue_len(&other->sk_receive_queue) > other->sk_max_ack_backlog)) { if (!timeo) { err = -EAGAIN; |