Bläddra i källkod

unetmsg: notify subscribers when remote peer connection drops

When a remote peer's connection drops (device powered off, unetmsgd
crash, network failure), network_rx_cleanup_state silently removed
the remote publish/subscribe handles without notifying local
subscribers. This meant local clients had no way to detect that a
remote peer had disappeared.

Call handle_publish for each channel where a remote publish handle
is removed during connection cleanup, so local subscribers receive
the publisher change notification and can react accordingly.

Signed-off-by: John Crispin <[email protected]>
John Crispin 2 veckor sedan
förälder
incheckning
7fd71f2c74

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

@@ -51,8 +51,12 @@ function network_rx_cleanup_state(name)
 	for (let cur, sub in core.remote_subscribe)
 		delete sub[name];
 
-	for (let cur, sub in core.remote_publish)
+	for (let cur, sub in core.remote_publish) {
+		if (!sub[name])
+			continue;
 		delete sub[name];
+		core.handle_publish(null, cur);
+	}
 }
 
 function network_rx_socket_close(data)