Explorar o código

unetmsg: only send publish notifications for remote publisher changes

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 <[email protected]>
Felix Fietkau hai 2 semanas
pai
achega
e0722d0ac4

+ 4 - 3
package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-remote.uc

@@ -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];
 		}