summaryrefslogtreecommitdiff
path: root/android/avrcp.c
diff options
context:
space:
mode:
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>2014-01-30 15:23:43 +0200
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-02-02 07:59:47 -0800
commit1d7219ce3d95918cee8e5b4c7e3809cb1623d46a (patch)
tree6c9776f1bb04fe23e09cd93fec30279aa3f640c8 /android/avrcp.c
parent3ad3dd338f33c28c1f056aed381214eb2bb5ea38 (diff)
downloadbluez-1d7219ce3d95918cee8e5b4c7e3809cb1623d46a.tar.gz
android/avrcp: Close AVRCP channel on error
This fixes resource leak.
Diffstat (limited to 'android/avrcp.c')
-rw-r--r--android/avrcp.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/android/avrcp.c b/android/avrcp.c
index 485b48526..ef833dfe0 100644
--- a/android/avrcp.c
+++ b/android/avrcp.c
@@ -248,13 +248,13 @@ bool bt_avrcp_register(const bdaddr_t *addr)
rec = avrcp_record();
if (!rec) {
error("Failed to allocate AVRCP record");
- return false;
+ goto fail;
}
if (bt_adapter_add_record(rec, 0) < 0) {
error("Failed to register AVRCP record");
sdp_record_free(rec);
- return false;
+ goto fail;
}
record_id = rec->handle;
@@ -262,6 +262,12 @@ bool bt_avrcp_register(const bdaddr_t *addr)
G_N_ELEMENTS(cmd_handlers));
return true;
+fail:
+ g_io_channel_shutdown(server, TRUE, NULL);
+ g_io_channel_unref(server);
+ server = NULL;
+
+ return false;
}
void bt_avrcp_unregister(void)