From: Denis Kenzior <denkenz@gmail.com>
To: Ronan Pigott <ronan@rjp.ie>, iwd@lists.linux.dev
Subject: Re: [PATCH] dbus: register interface before acquiring name
Date: Fri, 30 Jan 2026 09:45:17 -0600 [thread overview]
Message-ID: <35652eba-2aa9-4b6e-8bcd-a742fde28645@gmail.com> (raw)
In-Reply-To: <20260127224325.86027-3-ronan@rjp.ie>
Hi Ronan,
On 1/27/26 4:40 PM, Ronan Pigott wrote:
> If the interface isn't available by the time we acquire the well-known
> name, clients can get confused when the expected interfaces are missing
> during bus activation.
> ---
> This code seems backwards to me. Presently, if IWD is not running,
> calling any IWD methods will fail:
>
> $ busctl call net.connman.iwd /net/connman/iwd net.connman.iwd.Daemon GetInfo
> Call failed: No matching method found
>
> only to succeed immediately after once the bus activation is complete:
>
> $ busctl call net.connman.iwd /net/connman/iwd net.connman.iwd.Daemon GetInfo
> a{sv} 3 "NetworkConfigurationEnabled" b false "StateDirectory" s "/var/lib/iwd" "Version" s "3.10"
>
> With this patch, we register IWD methods before acquiring the well-known
> name, and the abovve call succeeds on the first try.
>
> src/main.c | 46 +++++++++++++++++++++-------------------------
> 1 file changed, 21 insertions(+), 25 deletions(-)
>
<snip>
> @@ -249,12 +228,29 @@ static void dbus_ready(void *user_data)
> {
> struct l_dbus *dbus = user_data;
>
> - l_dbus_name_acquire(dbus, "net.connman.iwd", false, false, false,
> - request_name_callback, NULL);
> -
> l_dbus_register_interface(dbus, IWD_DAEMON_INTERFACE,
> iwd_setup_deamon_interface,
> NULL, false);
> +
> + if (!l_dbus_object_manager_enable(dbus, "/"))
> + l_warn("Unable to register the ObjectManager");
> +
> + if (!l_dbus_object_add_interface(dbus, IWD_BASE_PATH,
> + IWD_DAEMON_INTERFACE,
> + NULL) ||
> + !l_dbus_object_add_interface(dbus, IWD_BASE_PATH,
> + L_DBUS_INTERFACE_PROPERTIES,
> + NULL))
> + l_info("Unable to add %s and/or %s at %s",
> + IWD_DAEMON_INTERFACE, L_DBUS_INTERFACE_PROPERTIES,
> + IWD_BASE_PATH);
> +
> + /* TODO: Always request nl80211 for now, ignoring auto-loading */
> + l_genl_request_family(genl, NL80211_GENL_NAME, nl80211_appeared,
> + NULL, NULL);
nit: I would preserve some of the original behavior and not request the NL80211
family until we know that the DBus name request succeeded. If we can't jump on
the bus, we can't manage NL80211, so having the subsystem loaded, etc is wasteful.
> +
> + l_dbus_name_acquire(dbus, "net.connman.iwd", false, false, false,
> + request_name_callback, NULL);
> }
Otherwise, looks reasonable.
>
> static void dbus_disconnected(void *user_data)
Regards,
-Denis
prev parent reply other threads:[~2026-01-30 15:45 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-27 22:40 [PATCH] dbus: register interface before acquiring name Ronan Pigott
2026-01-30 15:45 ` Denis Kenzior [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=35652eba-2aa9-4b6e-8bcd-a742fde28645@gmail.com \
--to=denkenz@gmail.com \
--cc=iwd@lists.linux.dev \
--cc=ronan@rjp.ie \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox