From a2b6df263a7429ca91deba118914a607512f3596 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Fri, 15 Oct 2021 12:19:45 +0200 Subject: [PATCH] Fix network state monitoring to work with NetworkManager 1.32 (#1991075) --- ...m-Avoid-using-deprecated-PropertiesC.patch | 87 +++++++++++++++++++ glib2.spec | 4 + 2 files changed, 91 insertions(+) create mode 100644 0001-gnetworkmonitornm-Avoid-using-deprecated-PropertiesC.patch diff --git a/0001-gnetworkmonitornm-Avoid-using-deprecated-PropertiesC.patch b/0001-gnetworkmonitornm-Avoid-using-deprecated-PropertiesC.patch new file mode 100644 index 0000000..112e4a5 --- /dev/null +++ b/0001-gnetworkmonitornm-Avoid-using-deprecated-PropertiesC.patch @@ -0,0 +1,87 @@ +From f4e14edf66871c1b3dc213c286b28fd4a1742b78 Mon Sep 17 00:00:00 2001 +From: Kalev Lember +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 + diff --git a/glib2.spec b/glib2.spec index 5eff3ec..7478af4 100644 --- a/glib2.spec +++ b/glib2.spec @@ -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++