Hello community, here is the log from the commit of package NetworkManager for openSUSE:Factory checked in at 2014-12-21 12:02:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/NetworkManager (Old) and /work/SRC/openSUSE:Factory/.NetworkManager.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "NetworkManager" Changes: -------- --- /work/SRC/openSUSE:Factory/NetworkManager/NetworkManager.changes 2014-11-18 22:46:32.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.NetworkManager.new/NetworkManager.changes 2014-12-21 12:00:56.000000000 +0100 @@ -1,0 +2,7 @@ +Thu Dec 18 19:57:47 UTC 2014 - [email protected] + +- Add 0001-core-don-t-auto-launch-logind-bgo-741572.patch: do not + trigger logind start on system startup to avoid deadlock + (boo#905639). + +------------------------------------------------------------------- New: ---- 0001-core-don-t-auto-launch-logind-bgo-741572.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ NetworkManager.spec ++++++ --- /var/tmp/diff_new_pack.Mkqhnl/_old 2014-12-21 12:00:57.000000000 +0100 +++ /var/tmp/diff_new_pack.Mkqhnl/_new 2014-12-21 12:00:57.000000000 +0100 @@ -42,6 +42,8 @@ Patch5: nm-probe-radius-server-cert.patch # PATCH-FIX-OPENSUSE NetworkManager-geoclue-interaction.patch [email protected] -- Allow the user "srvGeoClue" to query NetworkManager on the dbus Patch6: NetworkManager-geoclue-interaction.patch +# PATCH-FIX-UPSTREAM 0001-core-don-t-auto-launch-logind-bgo-741572.patch boo#905639 bgo#741572 [email protected] -- Prevent logind autostart and deadlock on system boot +Patch7: 0001-core-don-t-auto-launch-logind-bgo-741572.patch BuildRequires: fdupes BuildRequires: gobject-introspection-devel BuildRequires: gtk-doc @@ -195,6 +197,7 @@ #patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 %build pppddir=`ls -1d /usr/%_lib/pppd/2*` ++++++ 0001-core-don-t-auto-launch-logind-bgo-741572.patch ++++++ >From 87d77e1dddc62a12e24e97afe33bcf6d9962696c Mon Sep 17 00:00:00 2001 From: Dan Williams <[email protected]> Date: Mon, 15 Dec 2014 14:15:55 -0600 Subject: [PATCH] core: don't auto-launch logind (bgo #741572) logind might need the network for login information, and apparently it fails hard if the network isn't up, and apparently it doesn't recover when the network does come up. Since NM doesn't actually care about suspend/resume until logind is running anyway, don't auto-launch it. Just wait until it shows up. While we're at it, make proxy creation async. https://bugzilla.gnome.org/show_bug.cgi?id=741572 --- src/nm-sleep-monitor-systemd.c | 53 +++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/src/nm-sleep-monitor-systemd.c b/src/nm-sleep-monitor-systemd.c index e3844ae..c0bc65e 100644 --- a/src/nm-sleep-monitor-systemd.c +++ b/src/nm-sleep-monitor-systemd.c @@ -148,24 +148,59 @@ signal_cb (GDBusProxy *proxy, } static void -sleep_setup (NMSleepMonitor *self) +name_owner_cb (GObject *object, + GParamSpec *pspec, + gpointer user_data) { - GDBusConnection *bus; + GDBusProxy *proxy = G_DBUS_PROXY (object); + NMSleepMonitor *self = NM_SLEEP_MONITOR (user_data); + char *owner; - bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); - self->sd_proxy = g_dbus_proxy_new_sync (bus, 0, NULL, - SD_NAME, SD_PATH, SD_INTERFACE, - NULL, NULL); - g_object_unref (bus); + g_assert (proxy == self->sd_proxy); + + owner = g_dbus_proxy_get_name_owner (proxy); + if (owner) + take_inhibitor (self); + else + drop_inhibitor (self); + g_free (owner); +} + +static void +on_proxy_acquired (GObject *object, + GAsyncResult *res, + NMSleepMonitor *self) +{ + GError *error = NULL; + char *owner; + + self->sd_proxy = g_dbus_proxy_new_for_bus_finish (res, &error); + if (!self->sd_proxy) { + nm_log_warn (LOGD_SUSPEND, "Failed to acquire logind proxy: %s", error->message); + g_clear_error (&error); + return; + } + + g_signal_connect (self->sd_proxy, "notify::g-name-owner", G_CALLBACK (name_owner_cb), self); g_signal_connect (self->sd_proxy, "g-signal", G_CALLBACK (signal_cb), self); + + owner = g_dbus_proxy_get_name_owner (self->sd_proxy); + if (owner) + take_inhibitor (self); + g_free (owner); } static void nm_sleep_monitor_init (NMSleepMonitor *self) { self->inhibit_fd = -1; - sleep_setup (self); - take_inhibitor (self); + g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + NULL, + SD_NAME, SD_PATH, SD_INTERFACE, + NULL, + (GAsyncReadyCallback) on_proxy_acquired, self); } static void -- 1.9.3 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
