The cleanup condition checked != instead of ==, inverting the logic.
This caused two problems:
When an authenticated RX connection disconnected, remote state for that
host was never cleaned up since the stored entry matched the one being
closed.
When a stale unauthenticated connection from a peer closed, any existing
authenticated connection from the same peer was incorrectly deleted and
its remote state wiped.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
core.dbg(`Incoming connection from ${data.name} closed\n`);
let net = networks[data.network];
- if (net && net.rx_channels[data.name] != data) {
+ if (net && net.rx_channels[data.name] == data) {
delete net.rx_channels[data.name];
network_rx_cleanup_state(data.name);
}