This reverts commit 30902dc3cb0ea1cfc7ac2b17bcf478ff98420d74. It causes all kinds of problems, based upon a report by Bernard (f6bvp) and analysis by Jarek Poplawski.
Unified · Split
| @@ -39,9 +39,11 @@ void ax25_std_heartbeat_expiry(ax25_cb *ax25) · 38 unmodified lines | |||
| 39 | 39 | ||
| 40 | switch (ax25->state) { | 40 | switch (ax25->state) { |
| 41 | case AX25_STATE_0: | 41 | case AX25_STATE_0: |
| 42 | if (!sk || | 42 | /* Magic here: If we listen() and a new link dies before it |
| 43 | sock_flag(sk, SOCK_DESTROY) || | 43 | is accepted() it isn't 'dead' so doesn't get removed. */ |
| 44 | sock_flag(sk, SOCK_DEAD)) { | 44 | if (!sk || sock_flag(sk, SOCK_DESTROY) || |
| 45 | (sk->sk_state == TCP_LISTEN && | ||
| 46 | sock_flag(sk, SOCK_DEAD))) { | ||
| 45 | if (sk) { | 47 | if (sk) { |
| 46 | sock_hold(sk); | 48 | sock_hold(sk); |
| 47 | ax25_destroy_socket(ax25); | 49 | ax25_destroy_socket(ax25); |