]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
unetmsg: only send publish notifications for remote publisher changes
authorFelix Fietkau <nbd@nbd.name>
Sat, 7 Feb 2026 08:02:24 +0000 (08:02 +0000)
committerFelix Fietkau <nbd@nbd.name>
Sat, 7 Feb 2026 09:04:18 +0000 (10:04 +0100)
handle_publish() notifies local subscribers about publisher state
changes. The publish/subscribe handler in network_socket_handle_request()
was calling it for both remote publish and subscribe changes, but
subscriber changes are not relevant to local subscribers.

Guard the handle_publish() calls with a msgtype == "publish" check,
matching the local client paths in unetmsgd-client.uc which already
have this guard.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-remote.uc

index c7301e1a09fe0f7b2709245e08450deb61e11870..e5f1b7fb5f9d3e7c80ae5578f4e15a542ce7dcf6 100644 (file)
@@ -104,7 +104,7 @@ function network_socket_handle_request(sock_data, req)
                        return;
                if (args.enabled) {
                        if (list[name]) {
-                               if (tx_auth)
+                               if (tx_auth && msgtype == "publish")
                                        core.handle_publish(null, name);
                                return 0;
                        }
@@ -124,13 +124,14 @@ function network_socket_handle_request(sock_data, req)
                                network: sock_data.network,
                                name: host,
                        }, pubsub_proto);
-                       if (tx_auth)
+                       if (tx_auth && msgtype == "publish")
                                core.handle_publish(null, name);
                        list[name] = true;
                } else {
                        if (!list[name])
                                return 0;
-                       core.handle_publish(null, name);
+                       if (msgtype == "publish")
+                               core.handle_publish(null, name);
                        delete core["remote_" + msgtype][name][host];
                        delete list[name];
                }