diff options
| -rw-r--r-- | hcid/dbus-adapter.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 7986b028..c7f11d5b 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -1808,6 +1808,12 @@ static gboolean create_bonding_conn_complete(GIOChannel *io, GIOCondition cond,  		goto cleanup;  	} +	if (cond & G_IO_HUP & G_IO_ERR) { +		debug("Hangup or error on bonding IO channel"); +		error_failed(pdata->bonding->conn, pdata->bonding->rq, EIO); +		goto failed; +	} +  	sk = g_io_channel_unix_get_fd(io);  	len = sizeof(ret); @@ -1867,7 +1873,9 @@ static gboolean create_bonding_conn_complete(GIOChannel *io, GIOCondition cond,  	hci_close_dev(dd); -	pdata->bonding->io_id = 0; +	pdata->bonding->io_id = g_io_add_watch(io, G_IO_NVAL | G_IO_HUP | G_IO_ERR, +						(GIOFunc) create_bonding_conn_complete, +						pdata);  	return FALSE; | 
