When both peers connect simultaneously, the RX side can authenticate
before the TX handshake completes. network_check_auth() was sending a
ping on the unauthenticated TX channel, which gets rejected by the
remote's pre-auth handler as "Auth failed", killing the connection and
triggering an endless reconnect cycle.
Check chan.auth before interacting with the TX channel. If TX auth
hasn't completed yet, just schedule a reconnect timer - auth_data_cb
already handles state sync when TX auth completes.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
core.dbg(`Incoming connection from ${sock_data.name} established\n`);
let chan = net.tx_channels[sock_data.name];
- if (!chan) {
+ if (!chan || !chan.auth)
net.timer.set(100);
- return;
- }
-
- chan.channel.request({
- method: "ping",
- data: {},
- return: "ignore",
- });
}
function network_accept(net, sock, addr)