diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2018-04-23 17:21:23 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2018-04-23 17:21:23 +0200 |
commit | 3d509f6d63408b8e6899408d3c5f7af11e91168e (patch) | |
tree | 11dc1b6e6260cbcfd381d6197262efa02a294b76 | |
parent | 6daafb1df6bff3c073d041c42c567d464835a159 (diff) | |
parent | 4672499b95083d2f4b38ec9f409d72c74ade2902 (diff) | |
download | NetworkManager-3d509f6d63408b8e6899408d3c5f7af11e91168e.tar.gz |
merge: branch 'bg/dns-resolved-fix'
https://github.com/NetworkManager/NetworkManager/pull/102
-rw-r--r-- | libnm-core/nm-setting-connection.c | 2 | ||||
-rw-r--r-- | src/main.c | 14 | ||||
-rw-r--r-- | src/nm-dbus-manager.c | 39 | ||||
-rw-r--r-- | src/nm-dbus-manager.h | 8 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c | 2 |
5 files changed, 40 insertions, 25 deletions
diff --git a/libnm-core/nm-setting-connection.c b/libnm-core/nm-setting-connection.c index 40153c0ff9..68900e06f5 100644 --- a/libnm-core/nm-setting-connection.c +++ b/libnm-core/nm-setting-connection.c @@ -1077,7 +1077,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) } if ( priv->mdns < NM_SETTING_CONNECTION_MDNS_DEFAULT - || priv->mdns > NM_SETTING_CONNECTION_MDNS_RESOLVE) { + || priv->mdns > NM_SETTING_CONNECTION_MDNS_YES) { g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY, diff --git a/src/main.c b/src/main.c index bd8e26a556..b3f9f40ee6 100644 --- a/src/main.c +++ b/src/main.c @@ -225,7 +225,7 @@ int main (int argc, char *argv[]) { gboolean success = FALSE; - NMManager *manager; + NMManager *manager = NULL; NMConfig *config; GError *error = NULL; gboolean wrote_pidfile = FALSE; @@ -395,12 +395,13 @@ main (int argc, char *argv[]) NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT, NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL)); - manager = nm_manager_setup (); + if (!nm_dbus_manager_acquire_bus (nm_dbus_manager_get ())) + goto done_no_manager; - if (!nm_dbus_manager_start (nm_dbus_manager_get (), - nm_manager_dbus_set_property_handle, - manager)) - goto done; + manager = nm_manager_setup (); + nm_dbus_manager_start (nm_dbus_manager_get(), + nm_manager_dbus_set_property_handle, + manager); nm_dispatcher_init (); @@ -453,6 +454,7 @@ done: nm_dns_manager_stop (nm_dns_manager_get ()); +done_no_manager: if (global_opt.pidfile && wrote_pidfile) unlink (global_opt.pidfile); diff --git a/src/nm-dbus-manager.c b/src/nm-dbus-manager.c index 3e3691296f..060ae81d83 100644 --- a/src/nm-dbus-manager.c +++ b/src/nm-dbus-manager.c @@ -83,6 +83,7 @@ typedef struct { GDBusConnection *connection; GDBusProxy *proxy; guint objmgr_registration_id; + gboolean started; } NMDBusManagerPrivate; struct _NMDBusManager { @@ -930,6 +931,7 @@ _obj_register (NMDBusManager *self, nm_assert (c_list_is_empty (&obj->internal.registration_lst_head)); nm_assert (priv->connection); + nm_assert (priv->started); n_klasses = 0; gtype = G_OBJECT_TYPE (obj); @@ -1107,7 +1109,7 @@ _nm_dbus_manager_obj_export (NMDBusObject *obj) nm_assert_not_reached (); c_list_link_tail (&priv->objects_lst_head, &obj->internal.objects_lst); - if (priv->connection) + if (priv->connection && priv->started) _obj_register (self, obj); } @@ -1306,7 +1308,7 @@ _nm_dbus_manager_obj_emit_signal (NMDBusObject *obj, self = obj->internal.bus_manager; priv = NM_DBUS_MANAGER_GET_PRIVATE (self); - if (!priv->connection) { + if (!priv->connection || !priv->started) { nm_g_variant_unref_floating (args); return; } @@ -1453,29 +1455,41 @@ static const GDBusInterfaceInfo interface_info_objmgr = NM_DEFINE_GDBUS_INTERFAC /*****************************************************************************/ -gboolean +void nm_dbus_manager_start (NMDBusManager *self, NMDBusManagerSetPropertyHandler set_property_handler, gpointer set_property_handler_data) { NMDBusManagerPrivate *priv; + NMDBusObject *obj; + + g_return_if_fail (NM_IS_DBUS_MANAGER (self)); + priv = NM_DBUS_MANAGER_GET_PRIVATE (self); + g_return_if_fail (priv->connection); + + priv->set_property_handler = set_property_handler; + priv->set_property_handler_data = set_property_handler_data; + priv->started = TRUE; + + c_list_for_each_entry (obj, &priv->objects_lst_head, internal.objects_lst) + _obj_register (self, obj); +} + +gboolean +nm_dbus_manager_acquire_bus (NMDBusManager *self) +{ + NMDBusManagerPrivate *priv; gs_free_error GError *error = NULL; gs_unref_variant GVariant *ret = NULL; gs_unref_object GDBusConnection *connection = NULL; gs_unref_object GDBusProxy *proxy = NULL; guint32 result; guint registration_id; - NMDBusObject *obj; g_return_val_if_fail (NM_IS_DBUS_MANAGER (self), FALSE); priv = NM_DBUS_MANAGER_GET_PRIVATE (self); - priv->set_property_handler = set_property_handler; - priv->set_property_handler_data = set_property_handler_data; - - g_return_val_if_fail (!priv->connection, FALSE); - /* we will create the D-Bus connection and registering the name synchronously. * The reason why that is necessary is because: * (1) if we are unable to create a D-Bus connection, it means D-Bus is not @@ -1527,7 +1541,7 @@ nm_dbus_manager_start (NMDBusManager *self, NULL, &error); if (!ret) { - _LOGE ("fatal failure to aquire D-Bus service \"%s"": %s", + _LOGE ("fatal failure to acquire D-Bus service \"%s"": %s", NM_DBUS_SERVICE, error->message); return FALSE; } @@ -1555,10 +1569,7 @@ nm_dbus_manager_start (NMDBusManager *self, priv->connection = g_steal_pointer (&connection); priv->proxy = g_steal_pointer (&proxy); - _LOGI ("aquired D-Bus service \"%s\"", NM_DBUS_SERVICE); - - c_list_for_each_entry (obj, &priv->objects_lst_head, internal.objects_lst) - _obj_register (self, obj); + _LOGI ("acquired D-Bus service \"%s\"", NM_DBUS_SERVICE); return TRUE; } diff --git a/src/nm-dbus-manager.h b/src/nm-dbus-manager.h index 617f8a674c..cacda966f6 100644 --- a/src/nm-dbus-manager.h +++ b/src/nm-dbus-manager.h @@ -49,9 +49,11 @@ typedef void (*NMDBusManagerSetPropertyHandler) (NMDBusObject *obj, GVariant *value, gpointer user_data); -gboolean nm_dbus_manager_start (NMDBusManager *self, - NMDBusManagerSetPropertyHandler handler, - gpointer handler_data); +gboolean nm_dbus_manager_acquire_bus (NMDBusManager *self); + +void nm_dbus_manager_start (NMDBusManager *self, + NMDBusManagerSetPropertyHandler set_property_handler, + gpointer set_property_handler_data); GDBusConnection *nm_dbus_manager_get_connection (NMDBusManager *self); diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c index c720729713..40810d2208 100644 --- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c +++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-plugin.c @@ -892,7 +892,7 @@ _dbus_request_name_done (GObject *source_object, } } - _LOGD ("dbus: aquired D-Bus service %s and exported %s object", + _LOGD ("dbus: acquired D-Bus service %s and exported %s object", IFCFGRH1_BUS_NAME, IFCFGRH1_OBJECT_PATH); } |