summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtan Kissling <etan.kissling@gmail.com>2021-07-22 11:41:28 +0000
committerSimon Kelley <simon@thekelleys.org.uk>2021-08-10 21:16:03 +0100
commitd387f8f06c68b43d549388413d996bef63e4b9f6 (patch)
tree02d916c88313f04ffac64690007e5618fbbabd96
parentea43234c868e4136d900f35a19aaedcfd9f96c70 (diff)
downloaddnsmasq-d387f8f06c68b43d549388413d996bef63e4b9f6.tar.gz
Re-order UBus teardown logic.
When destroying the UBus context, private fields of our ubus_object were being reset to 0 while UBus was still owning those objects. While this seems to work out fine, it seems cleaner to first release the object so that UBus no longer owns it, before proceding to reset those fields. Signed-off-by: Etan Kissling <etan.kissling@gmail.com>
-rw-r--r--src/ubus.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/ubus.c b/src/ubus.c
index eb44eb4..6b1b7db 100644
--- a/src/ubus.c
+++ b/src/ubus.c
@@ -81,12 +81,12 @@ static void ubus_subscribe_cb(struct ubus_context *ctx, struct ubus_object *obj)
static void ubus_destroy(struct ubus_context *ubus)
{
+ ubus_free(ubus);
+ daemon->ubus = NULL;
+
// Forces re-initialization when we're reusing the same definitions later on.
ubus_object.id = 0;
ubus_object_type.id = 0;
-
- ubus_free(ubus);
- daemon->ubus = NULL;
}
static void ubus_disconnect_cb(struct ubus_context *ubus)