diff --git a/audio/headset.c b/audio/headset.c
index bdaa8da..dff10d1 100644
--- a/audio/headset.c
+++ b/audio/headset.c
error("Audio connection got disconnected");
+ pending_connect_finalize(device);
headset_set_state(device, HEADSET_STATE_CONNECTED);
return FALSE;
{
struct headset *hs = dev->headset;
unsigned int id;
+ int sock;
if (hs->state == HEADSET_STATE_DISCONNECTED ||
hs->state == HEADSET_STATE_CONNECTING)
hs->dc_timer = 0;
}
- headset_set_state(dev, HEADSET_STATE_CONNECTED);
+ sock = g_io_channel_unix_get_fd(hs->sco);
+
+ /* shutdown but leave the socket open and wait for hup */
+ shutdown(sock, SHUT_RDWR);
id = connect_cb_new(hs, HEADSET_STATE_CONNECTED, cb, user_data);
- g_idle_add((GSourceFunc) dummy_connect_complete, dev);
return id;
}