From: Alexandru Ardelean Date: Wed, 5 Jul 2017 13:21:47 +0000 (+0300) Subject: ubusd_monitor: alloc & free the buffer outside of the loop X-Git-Url: http://git.openwrt.org/project/luci.git;master?a=commitdiff_plain;h=27d712d394a0086ff68b83de26ded70ab28d1757;p=project%2Fubus.git ubusd_monitor: alloc & free the buffer outside of the loop Should save a few cycles, since the data that's being changed is only the seq number. And the `ub` is always created as shared. Signed-off-by: Alexandru Ardelean --- diff --git a/ubusd_monitor.c b/ubusd_monitor.c index a192206..fcbc6a4 100644 --- a/ubusd_monitor.c +++ b/ubusd_monitor.c @@ -72,13 +72,15 @@ ubusd_monitor_message(struct ubus_client *cl, struct ubus_msg_buf *ub, bool send blob_put_int8(&mb, UBUS_MONITOR_SEND, send); blob_put(&mb, UBUS_MONITOR_DATA, blob_data(ub->data), blob_len(ub->data)); + ub = ubus_msg_new(mb.head, blob_raw_len(mb.head), true); + ub->hdr.type = UBUS_MSG_MONITOR; + list_for_each_entry(m, &monitors, list) { - ub = ubus_msg_new(mb.head, blob_raw_len(mb.head), true); - ub->hdr.type = UBUS_MSG_MONITOR; ub->hdr.seq = ++m->seq; ubus_msg_send(m->cl, ub); - ubus_msg_free(ub); } + + ubus_msg_free(ub); } static int