===== net/ipv4/tcp_ipv4.c 1.99 vs edited ===== --- 1.99/net/ipv4/tcp_ipv4.c 2004-09-15 06:57:07 +10:00 +++ edited/net/ipv4/tcp_ipv4.c 2004-10-06 11:25:04 +10:00 @@ -2175,8 +2175,14 @@ sk = sk_next(st->syn_wait_sk); st->state = TCP_SEQ_STATE_LISTENING; read_unlock_bh(&tp->syn_wait_lock); - } else + } else { + tp = tcp_sk(sk); + read_lock_bh(&tp->syn_wait_lock); + if (tp->listen_opt && tp->listen_opt->qlen) + goto start_req; + read_unlock_bh(&tp->syn_wait_lock); sk = sk_next(sk); + } get_sk: sk_for_each_from(sk, node) { if (sk->sk_family == st->family) { @@ -2186,6 +2192,7 @@ tp = tcp_sk(sk); read_lock_bh(&tp->syn_wait_lock); if (tp->listen_opt && tp->listen_opt->qlen) { +start_req: st->uid = sock_i_uid(sk); st->syn_wait_sk = sk; st->state = TCP_SEQ_STATE_OPENREQ;