From 8c4cc1b8690db4acb034e433fc1f9704ac23aad9 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Tue, 12 Dec 2023 16:15:45 +0100 Subject: [PATCH] l2cap: ignore signaling responses in closed state --- src/l2cap.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/l2cap.c b/src/l2cap.c index 426810ed7..a564c077e 100644 --- a/src/l2cap.c +++ b/src/l2cap.c @@ -3766,8 +3766,19 @@ static void l2cap_signaling_handler_dispatch(hci_con_handle_t handle, uint8_t * } } - // send command reject - l2cap_register_signaling_response(handle, COMMAND_REJECT, sig_id, 0, L2CAP_REJ_CMD_UNKNOWN); + // If dynamic channel cannot be found, either never set-up or already finalized, assume state CLOSED + // Handle events as described in Core 5.4, Vol 3. Host, 6.1.1 CLOSED state + switch (code){ + case CONNECTION_RESPONSE: + case CONFIGURE_RESPONSE: + case DISCONNECTION_RESPONSE: + // Ignore request + break; + default: + // send command reject with reason unknown command + l2cap_register_signaling_response(handle, COMMAND_REJECT, sig_id, 0, L2CAP_REJ_CMD_UNKNOWN); + break; + } } #endif