• Luiz Augusto von Dentz's avatar
    Bluetooth: Fix rejected connection not disconnecting ACL link · 9e726b17
    Luiz Augusto von Dentz authored
    When using DEFER_SETUP on a RFCOMM socket, a SABM frame triggers
    authorization which when rejected send a DM response. This is fine
    according to the RFCOMM spec:
    
        the responding implementation may replace the "proper" response
        on the Multiplexer Control channel with a DM frame, sent on the
        referenced DLCI to indicate that the DLCI is not open, and that
        the responder would not grant a request to open it later either.
    
    But some stacks doesn't seems to cope with this leaving DLCI 0 open after
    receiving DM frame.
    
    To fix it properly a timer was introduced to rfcomm_session which is used
    to set a timeout when the last active DLC of a session is unlinked, this
    will give the remote stack some time to reply with a proper DISC frame on
    DLCI 0 avoiding both sides sending DISC to each other on stacks that
    follow the specification and taking care of those who don't by taking
    down DLCI 0.
    Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.dentz@openbossa.org>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    9e726b17
core.c 49.1 KB