From: Jo?o Paulo Rechi Vita <jprvita@xxxxxxxxxxxxx> --- src/modules/bluetooth/backend-ofono.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/modules/bluetooth/backend-ofono.c b/src/modules/bluetooth/backend-ofono.c index 5fb99de..f9157e3 100644 --- a/src/modules/bluetooth/backend-ofono.c +++ b/src/modules/bluetooth/backend-ofono.c @@ -187,6 +187,24 @@ static int hf_audio_agent_transport_acquire(pa_bluetooth_transport *t, bool opti } static void hf_audio_agent_transport_release(pa_bluetooth_transport *t) { + pa_bluetooth_backend *backend = t->userdata; + hf_audio_card *card; + + pa_assert(backend); + pa_assert(card = pa_hashmap_get(backend->cards, t->path)); + + if (t->state <= PA_BLUETOOTH_TRANSPORT_STATE_IDLE) { + pa_log_info("Transport %s already released", t->path); + return; + } + + if (card->fd < 0) + return; + + /* shutdown to make sure connection is dropped immediately */ + shutdown(card->fd, SHUT_RDWR); + close(card->fd); + card->fd = -1; } static void hf_audio_agent_card_found(pa_bluetooth_backend *backend, const char *path, DBusMessageIter *props_i) { -- 1.9.3