client: Fix not cleaning up notify pipe 95/204895/1
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 6 Feb 2018 10:01:19 +0000 (08:01 -0200)
committerAmit Purwar <amit.purwar@samsung.com>
Mon, 15 Apr 2019 03:25:16 +0000 (08:55 +0530)
If remote unsubscribe, disconnects or the daemon closes the socket the
io shall be destroyed properly otherwise it will prevent new
subscriptions.

Change-Id: I9cd77b61e7bfdd38ecd160edd0b9316d8285c7b0
Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
client/gatt.c

index b83bea7..b640b6e 100755 (executable)
@@ -679,11 +679,17 @@ static bool pipe_hup(struct io *io, void *user_data)
        struct chrc *chrc = user_data;
 
        if (chrc) {
-               bt_shell_printf("Attribute %s Write pipe closed\n", chrc->path);
-               if (chrc->write_io) {
+               bt_shell_printf("Attribute %s %s pipe closed\n", chrc->path,
+                               io == chrc->write_io ? "Write" : "Notify");
+
+               if (io == chrc->write_io) {
                        io_destroy(chrc->write_io);
                        chrc->write_io = NULL;
+               } else {
+                       io_destroy(chrc->notify_io);
+                       chrc->notify_io = NULL;
                }
+
                return false;
        }