summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Ardelean <ardeleanalex@gmail.com>2017-07-05 16:21:47 +0300
committerFelix Fietkau <nbd@nbd.name>2017-11-13 09:57:55 +0100
commit27d712d394a0086ff68b83de26ded70ab28d1757 (patch)
tree093fcc33c8786a541b29f5090a8f2ea80eef7d7b
parentbe146ad2bce0b5377433fa2fe6602b3d4c14dead (diff)
downloadubus-27d712d394a0086ff68b83de26ded70ab28d1757.tar.gz
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 <ardeleanalex@gmail.com>
-rw-r--r--ubusd_monitor.c8
1 files changed, 5 insertions, 3 deletions
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