diff options
author | Andrei Emeltchenko <andrei.emeltchenko@intel.com> | 2014-01-30 15:23:43 +0200 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-02-02 07:59:47 -0800 |
commit | 1d7219ce3d95918cee8e5b4c7e3809cb1623d46a (patch) | |
tree | 6c9776f1bb04fe23e09cd93fec30279aa3f640c8 /android/avrcp.c | |
parent | 3ad3dd338f33c28c1f056aed381214eb2bb5ea38 (diff) | |
download | bluez-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.c | 10 |
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) |