> I see that, when receiving a Disconnect Complete event, > hci_disconn_complete_evt() deallocates the connection. But ... > > 1. What if the controller misbehaves and doesn't send a Disconnect > Complete event? AFAIU, the connection will never be deallocated in > this case. > > Wouldn't it make sense to have a timer for this? e.g. make > hci_disconnect() queue hci_conn_timeout() and, in the later, delete > the connection if it's not referenced and it was already marked as > closed. > > 2. What if the controller sends an error in the Command Status event > and the Disconnect Complete never arrives? > > I see that hci_cs_disconnect() notifies userland if it was triggered > through mgmt, but it doesn't provide a retry mechanism in case the > disconnection came from the kernel itself. In fact, what happens with > the connection's deallocation in this case? Is it ensured in any way? 3. What if the controller sends an error in the Disconnect Complete? I see the same issues as in (2). -- Alfonso Acosta Embedded Systems Engineer at Spotify Birger Jarlsgatan 61, Stockholm, Sweden http://www.spotify.com -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html