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]

Reply via email to