Browse Source

unetmsg: fix reconnect loop when RX authenticates before TX

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 <[email protected]>
Felix Fietkau 4 weeks ago
parent
commit
212040b5ca

+ 1 - 9
package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-remote.uc

@@ -203,16 +203,8 @@ function network_check_auth(sock_data, info)
 	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)