GDBusProxy: Drop unexpected signals
authorDavid Zeuthen <davidz@redhat.com>
Mon, 28 Mar 2011 16:10:25 +0000 (12:10 -0400)
committerDavid Zeuthen <davidz@redhat.com>
Mon, 28 Mar 2011 16:10:25 +0000 (12:10 -0400)
If we have an expected interface and receive a signal not mentioned in
the interface, simply drop it. This way, the application won't have to
check for the signal itself.

This was pointed out in

 https://bugzilla.gnome.org/show_bug.cgi?id=642724#c5

Signed-off-by: David Zeuthen <davidz@redhat.com>
gio/gdbusproxy.c

index eecbaf66b12f9c3a954457e912d7a2d7d853af4f..2b76090a3496fb1927273f9f76e4a2cd01bebd4d 100644 (file)
@@ -755,6 +755,14 @@ on_signal_received (GDBusConnection *connection,
   if (proxy->priv->name_owner != NULL && g_strcmp0 (sender_name, proxy->priv->name_owner) != 0)
     goto out;
 
+  if (proxy->priv->expected_interface != NULL)
+    {
+      const GDBusSignalInfo *info;
+      info = g_dbus_interface_info_lookup_signal (proxy->priv->expected_interface, signal_name);
+      if (info == NULL)
+        goto out;
+    }
+
   g_signal_emit (proxy,
                  signals[SIGNAL_SIGNAL],
                  0,