bap: Fix not always calling bap_io_close on disconnect
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 31 Aug 2023 21:57:14 +0000 (14:57 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 5 Jan 2024 13:34:04 +0000 (19:04 +0530)
bap_io_disconnected was getting registered for all links while
connecting which prevented bap_io_close to be called when ISO socket is
disconnected thus the cig_active flag will remain set preventing the IO
to be recreated.

profiles/audio/bap.c

index cc25eff..b408578 100644 (file)
@@ -1926,6 +1926,8 @@ static void bap_connecting(struct bt_bap_stream *stream, bool state, int fd,
 
        if (!ep->io) {
                io = g_io_channel_unix_new(fd);
+               ep->io_id = g_io_add_watch(io, G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+                                               bap_io_disconnected, ep);
                ep->io = io;
        } else
                io = ep->io;