summary refs log tree commit diff
path: root/src/main.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2018-05-11 22:08:45 +0200
committerMichael Biebl <biebl@debian.org>2018-05-11 22:08:45 +0200
commitee9c73a923909e23a649407be77e25235d769e25 (patch)
treee21c923621fa278e737da693df9eb60ea31a6067 /src/main.c
parentf60117b41d5433be1b4a96d82cd11d0c3dce9b63 (diff)
New upstream version 1.10.8 upstream/1.10.8
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c47
1 files changed, 26 insertions, 21 deletions
diff --git a/src/main.c b/src/main.c
index bd8e26a5..d59da052 100644
--- a/src/main.c
+++ b/src/main.c
@@ -39,7 +39,7 @@
 #include "NetworkManagerUtils.h"
 #include "nm-manager.h"
 #include "platform/nm-linux-platform.h"
-#include "nm-dbus-manager.h"
+#include "nm-bus-manager.h"
 #include "devices/nm-device.h"
 #include "dhcp/nm-dhcp-manager.h"
 #include "nm-config.h"
@@ -48,7 +48,7 @@
 #include "settings/nm-settings.h"
 #include "nm-auth-manager.h"
 #include "nm-core-internal.h"
-#include "nm-dbus-object.h"
+#include "nm-exported-object.h"
 #include "nm-connectivity.h"
 #include "dns/nm-dns-manager.h"
 #include "systemd/nm-sd.h"
@@ -93,10 +93,8 @@ static void
 _init_nm_debug (NMConfig *config)
 {
 	gs_free char *debug = NULL;
-	enum {
-		D_RLIMIT_CORE =    (1 << 0),
-		D_FATAL_WARNINGS = (1 << 1),
-	};
+	const guint D_RLIMIT_CORE = 1;
+	const guint D_FATAL_WARNINGS = 2;
 	GDebugKey keys[] = {
 		{ "RLIMIT_CORE", D_RLIMIT_CORE },
 		{ "fatal-warnings", D_FATAL_WARNINGS },
@@ -225,7 +223,6 @@ int
 main (int argc, char *argv[])
 {
 	gboolean success = FALSE;
-	NMManager *manager;
 	NMConfig *config;
 	GError *error = NULL;
 	gboolean wrote_pidfile = FALSE;
@@ -233,11 +230,13 @@ main (int argc, char *argv[])
 	NMConfigCmdLineOptions *config_cli;
 	guint sd_id = 0;
 
+	nm_g_type_init ();
+
 	/* Known to cause a possible deadlock upon GDBus initialization:
 	 * https://bugzilla.gnome.org/show_bug.cgi?id=674885 */
 	g_type_ensure (G_TYPE_SOCKET);
 	g_type_ensure (G_TYPE_DBUS_CONNECTION);
-	g_type_ensure (NM_TYPE_DBUS_MANAGER);
+	g_type_ensure (NM_TYPE_BUS_MANAGER);
 
 	_nm_utils_is_manager_process = TRUE;
 
@@ -395,18 +394,27 @@ main (int argc, char *argv[])
 	                                                         NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT,
 	                                                         NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL));
 
-	manager = nm_manager_setup ();
+	nm_manager_setup ();
 
-	if (!nm_dbus_manager_start (nm_dbus_manager_get (),
-	                            nm_manager_dbus_set_property_handle,
-	                            manager))
-		goto done;
+	if (!nm_bus_manager_get_connection (nm_bus_manager_get ())) {
+		nm_log_warn (LOGD_CORE, "Failed to connect to D-Bus; only private bus is available");
+	} else {
+		/* Start our DBus service */
+		if (!nm_bus_manager_start_service (nm_bus_manager_get ())) {
+			nm_log_err (LOGD_CORE, "failed to start the dbus service.");
+			goto done;
+		}
+	}
+
+#if WITH_CONCHECK
+	NM_UTILS_KEEP_ALIVE (nm_manager_get (), nm_connectivity_get (), "NMManager-depends-on-NMConnectivity");
+#endif
 
 	nm_dispatcher_init ();
 
-	g_signal_connect (manager, NM_MANAGER_CONFIGURE_QUIT, G_CALLBACK (manager_configure_quit), config);
+	g_signal_connect (nm_manager_get (), NM_MANAGER_CONFIGURE_QUIT, G_CALLBACK (manager_configure_quit), config);
 
-	if (!nm_manager_start (manager, &error)) {
+	if (!nm_manager_start (nm_manager_get (), &error)) {
 		nm_log_err (LOGD_CORE, "failed to initialize: %s", error->message);
 		goto done;
 	}
@@ -440,14 +448,11 @@ done:
 	 * state here. We don't bother updating the state as devices
 	 * change during regular operation. If NM is killed with SIGKILL,
 	 * it misses to update the state. */
-	nm_manager_write_device_state (manager);
+	nm_manager_write_device_state (nm_manager_get ());
 
-	/* FIXME: we don't properly shut down on exit. That is a bug.
-	 * NMDBusObject have an assertion that they get unexported before disposing.
-	 * We need this workaround and disable the assertion during our leaky shutdown. */
-	nm_dbus_object_set_quitting ();
+	nm_exported_object_class_set_quitting ();
 
-	nm_manager_stop (manager);
+	nm_manager_stop (nm_manager_get ());
 
 	nm_config_state_set (config, TRUE, TRUE);