diff options
author | Thomas Haller <thaller@redhat.com> | 2019-12-18 17:12:45 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-01-28 10:54:14 +0100 |
commit | 587c35b1f4cb4e8bf57c15db749bdac51c8505bc (patch) | |
tree | 37436881d34d8279a3de2de1467f4133d5a8b791 | |
parent | 718e524a7f8018336536531b8bc949d9aba68b1a (diff) | |
download | NetworkManager-587c35b1f4cb4e8bf57c15db749bdac51c8505bc.tar.gz |
libnm: factor out nml_init_data_return() for reuse
-rw-r--r-- | libnm/nm-client.c | 47 | ||||
-rw-r--r-- | libnm/nm-libnm-utils.h | 3 |
2 files changed, 30 insertions, 20 deletions
diff --git a/libnm/nm-client.c b/libnm/nm-client.c index b89f0e1900..70fff47b92 100644 --- a/libnm/nm-client.c +++ b/libnm/nm-client.c @@ -440,6 +440,30 @@ nml_init_data_new_async (GCancellable *cancellable, return init_data; } +void +nml_init_data_return (NMLInitData *init_data, + GError *error_take) +{ + nm_assert (init_data); + + nm_clear_pointer (&init_data->cancel_on_idle_source, nm_g_source_destroy_and_unref); + nm_clear_g_signal_handler (init_data->cancellable, &init_data->cancelled_id); + + if (init_data->is_sync) { + if (error_take) + g_propagate_error (init_data->data.sync.error_location, error_take); + g_main_loop_quit (init_data->data.sync.main_loop); + } else { + if (error_take) + g_task_return_error (init_data->data.async.task, error_take); + else + g_task_return_boolean (init_data->data.async.task, TRUE); + g_object_unref (init_data->data.async.task); + } + nm_g_object_unref (init_data->cancellable); + nm_g_slice_free (init_data); +} + /*****************************************************************************/ GError * @@ -6952,30 +6976,13 @@ _init_start_complete (NMClient *self, GError *error_take) { NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self); - NMLInitData *init_data; - - init_data = g_steal_pointer (&priv->init_data); NML_NMCLIENT_LOG_D (self, "%s init complete with %s%s%s", - init_data->is_sync ? "sync" : "async", + priv->init_data->is_sync ? "sync" : "async", NM_PRINT_FMT_QUOTED (error_take, "error: ", error_take->message, "", "success")); - nm_clear_pointer (&init_data->cancel_on_idle_source, nm_g_source_destroy_and_unref); - nm_clear_g_signal_handler (init_data->cancellable, &init_data->cancelled_id); - - if (init_data->is_sync) { - if (error_take) - g_propagate_error (init_data->data.sync.error_location, error_take); - g_main_loop_quit (init_data->data.sync.main_loop); - } else { - if (error_take) - g_task_return_error (init_data->data.async.task, error_take); - else - g_task_return_boolean (init_data->data.async.task, TRUE); - g_object_unref (init_data->data.async.task); - } - nm_g_object_unref (init_data->cancellable); - nm_g_slice_free (init_data); + nml_init_data_return (g_steal_pointer (&priv->init_data), + error_take); } static void diff --git a/libnm/nm-libnm-utils.h b/libnm/nm-libnm-utils.h index 2228612a9a..c28e8a622b 100644 --- a/libnm/nm-libnm-utils.h +++ b/libnm/nm-libnm-utils.h @@ -206,6 +206,9 @@ NMLInitData *nml_init_data_new_sync (GCancellable *cancellable, NMLInitData *nml_init_data_new_async (GCancellable *cancellable, GTask *task_take); +void nml_init_data_return (NMLInitData *init_data, + GError *error_take); + /*****************************************************************************/ typedef struct _NMLDBusObject NMLDBusObject; |