]> code.delx.au - pulseaudio/commitdiff
bluetooth: Fix sending D-Bus reply before internal callback
authorMikel Astiz <mikel.astiz@bmw-carit.de>
Thu, 24 Jan 2013 09:16:57 +0000 (10:16 +0100)
committerTanu Kaskinen <tanuk@iki.fi>
Thu, 24 Jan 2013 23:27:08 +0000 (01:27 +0200)
Make sure the reply to SetConfiguration() is sent before the internal
hook is fired. This is important because the hook could have side
effects including D-Bus interfactions (i.e. transport Acquire() being
called during module startup).

src/modules/bluetooth/bluetooth-util.c

index 92254f2a3c7163e4d671d0205ac2756d99bb8b5d..1a14c9c89200b91d7fcbadee1756a104dc1e5112 100644 (file)
@@ -1356,11 +1356,13 @@ static DBusMessage *endpoint_set_configuration(DBusConnection *conn, DBusMessage
     pa_log_debug("Transport %s profile %d available", t->path, t->profile);
 
     pa_assert_se(r = dbus_message_new_method_return(m));
+    pa_assert_se(dbus_connection_send(pa_dbus_connection_get(y->connection), r, NULL));
+    dbus_message_unref(r);
 
     if (old_any_connected != pa_bluetooth_device_any_audio_connected(d))
         run_callback(d, false);
 
-    return r;
+    return NULL;
 
 fail:
     pa_log("org.bluez.MediaEndpoint.SetConfiguration: invalid arguments");