diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2021-04-30 10:35:58 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2021-06-10 18:09:52 +0200 |
commit | cdc1e9ecff0b3fef3c6e64f666c386a07c09310f (patch) | |
tree | b19bbe8a98f6137e86a344f5061bb1404588e1eb | |
parent | 9d15ae640d9df6e7b01b10db6b4825c4a51c3bc3 (diff) | |
download | NetworkManager-cdc1e9ecff0b3fef3c6e64f666c386a07c09310f.tar.gz |
nmcli: invoke ReloadConnections() D-Bus method asynchronously
(cherry picked from commit 9d0aca6757deb3259bb80b34fea20305aacf3550)
-rw-r--r-- | clients/cli/connections.c | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index ee7b8fbbe9..fe4f8855cb 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -19,6 +19,7 @@ #include "nm-vpn-helpers.h" #include "nm-meta-setting-access.h" #include "nm-secret-agent-simple.h" +#include "nm-glib-aux/nm-dbus-aux.h" #include "utils.h" #include "common.h" @@ -9184,28 +9185,42 @@ do_connection_monitor(const NMCCommand *cmd, NmCli *nmc, int argc, const char *c } static void -do_connection_reload(const NMCCommand *cmd, NmCli *nmc, int argc, const char *const *argv) +connection_reload_cb(GObject *source, GAsyncResult *result, gpointer user_data) { - gs_unref_variant GVariant *result = NULL; - gs_free_error GError *error = NULL; - - next_arg(nmc, &argc, &argv, NULL); - if (nmc->complete) - return; + NmCli * nmc = user_data; + gs_free_error GError *error = NULL; + gs_unref_variant GVariant *ret = NULL; - result = nmc_dbus_call_sync(nmc, - "/org/freedesktop/NetworkManager/Settings", - "org.freedesktop.NetworkManager.Settings", - "ReloadConnections", - g_variant_new("()"), - G_VARIANT_TYPE("(b)"), - &error); + ret = nm_dbus_call_finish(result, &error); if (error) { g_string_printf(nmc->return_text, _("Error: failed to reload connections: %s."), nmc_error_get_simple_message(error)); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; } + + quit(); +} + +static void +do_connection_reload(const NMCCommand *cmd, NmCli *nmc, int argc, const char *const *argv) +{ + next_arg(nmc, &argc, &argv, NULL); + if (nmc->complete) + return; + + nmc->should_wait++; + nm_dbus_call(G_BUS_TYPE_SYSTEM, + NM_DBUS_SERVICE, + NM_DBUS_PATH_SETTINGS, + NM_DBUS_INTERFACE_SETTINGS, + "ReloadConnections", + g_variant_new("()"), + G_VARIANT_TYPE("(b)"), + NULL, + (nmc->timeout == -1 ? 90 : nmc->timeout) * 1000, + connection_reload_cb, + nmc); } static void |