summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin2026-02-06 07:41:49 +0000
committerFelix Fietkau2026-02-16 08:09:16 +0000
commit3091dbcb45bd9c783db17c58f7b822ebf6a8c3a1 (patch)
treee8f94002f1b4188ddf3ae58f7926f1ae1293ede9
parent40a7b55d70681db008427c11cfad56e3c78908c9 (diff)
downloadopenwrt-3091dbcb45bd9c783db17c58f7b822ebf6a8c3a1.tar.gz
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 <john@phrozen.org> (cherry picked from commit 7fd71f2c7424c75f6aca26f523e084012b122714)
-rw-r--r--package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-remote.uc6
1 files changed, 5 insertions, 1 deletions
diff --git a/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-remote.uc b/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-remote.uc
index e5f1b7fb5f..a02ba08c67 100644
--- a/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-remote.uc
+++ b/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)