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>
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)