Fix network state monitoring to work with NetworkManager 1.32 (#1991075)

This commit is contained in:
Kalev Lember 2021-10-15 12:19:45 +02:00
parent 947d874c70
commit a2b6df263a
2 changed files with 91 additions and 0 deletions

View File

@ -0,0 +1,87 @@
From f4e14edf66871c1b3dc213c286b28fd4a1742b78 Mon Sep 17 00:00:00 2001
From: Kalev Lember <klember@redhat.com>
Date: Fri, 15 Oct 2021 06:01:53 -0400
Subject: [PATCH] gnetworkmonitornm: Avoid using deprecated PropertiesChanged
signal
Instead, use the standard PropertiesChanged signal from
org.freedesktop.DBus.Properties which exists since NetworkManager 1.2.0.
This fixes the network state monitoring to correctly work with
NetworkManager 1.32 that completely removed the deprecated
org.freedesktop.NetworkManager PropertiesChanged signal.
---
gio/gnetworkmonitornm.c | 49 +++++------------------------------------
1 file changed, 6 insertions(+), 43 deletions(-)
diff --git a/gio/gnetworkmonitornm.c b/gio/gnetworkmonitornm.c
index 5a36a0ba1..a8040fb36 100644
--- a/gio/gnetworkmonitornm.c
+++ b/gio/gnetworkmonitornm.c
@@ -253,48 +253,11 @@ sync_properties (GNetworkMonitorNM *nm,
}
static void
-update_cached_property (GDBusProxy *proxy,
- const char *property_name,
- GVariantDict *dict)
+proxy_properties_changed_cb (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ GStrv invalidated_properties,
+ GNetworkMonitorNM *nm)
{
- GVariant *v;
-
- v = g_variant_dict_lookup_value (dict, property_name, NULL);
- if (!v)
- return;
- g_dbus_proxy_set_cached_property (proxy, property_name, v);
- g_variant_unref (v);
-}
-
-static void
-proxy_signal_cb (GDBusProxy *proxy,
- const gchar *sender_name,
- const gchar *signal_name,
- GVariant *parameters,
- GNetworkMonitorNM *nm)
-{
- GVariant *asv;
- GVariantDict *dict;
-
- if (g_strcmp0 (signal_name, "PropertiesChanged") != 0)
- return;
-
- g_variant_get (parameters, "(@a{sv})", &asv);
- if (!asv)
- return;
-
- dict = g_variant_dict_new (asv);
- g_variant_unref (asv);
- if (!dict)
- {
- g_warning ("Failed to handle PropertiesChanged signal from NetworkManager");
- return;
- }
-
- update_cached_property (nm->priv->proxy, "Connectivity", dict);
-
- g_variant_dict_unref (dict);
-
sync_properties (nm, TRUE);
}
@@ -361,8 +324,8 @@ g_network_monitor_nm_initable_init (GInitable *initable,
return FALSE;
}
- nm->priv->signal_id = g_signal_connect (G_OBJECT (proxy), "g-signal",
- G_CALLBACK (proxy_signal_cb), nm);
+ nm->priv->signal_id = g_signal_connect (G_OBJECT (proxy), "g-properties-changed",
+ G_CALLBACK (proxy_properties_changed_cb), nm);
nm->priv->proxy = proxy;
sync_properties (nm, FALSE);
--
2.31.1

View File

@ -17,6 +17,10 @@ Patch0: gnutls-hmac.patch
# Proposed upstream at https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1596
Patch1: gdesktopappinfo.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1991075
# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2296
Patch2: 0001-gnetworkmonitornm-Avoid-using-deprecated-PropertiesC.patch
BuildRequires: chrpath
BuildRequires: gcc
BuildRequires: gcc-c++