From cb6d7eb094e7979d016fdb2eb635cd9e48e5b132 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Thu, 12 Nov 2020 18:29:47 +0100 Subject: [PATCH] sm: support pairing as Central after failed re-ecnryption --- src/ble/sm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ble/sm.c b/src/ble/sm.c index 0fba040b1..54cd8f660 100644 --- a/src/ble/sm.c +++ b/src/ble/sm.c @@ -3509,9 +3509,9 @@ static void sm_event_packet_handler (uint8_t packet_type, uint16_t channel, uint } } else { status = ERROR_CODE_AUTHENTICATION_FAILURE; - // set state to 'TIMEOUT' to prevent further interaction with this + // set state to 'RE-ENCRYPTION FAILED' to allow pairing but prevent other interactions // also, gap_reconnect_security_setup_active will return true - sm_conn->sm_engine_state = SM_GENERAL_TIMEOUT; + sm_conn->sm_engine_state = SM_GENERAL_REENCRYPTION_FAILED; } // emit re-encryption complete @@ -3524,7 +3524,6 @@ static void sm_event_packet_handler (uint8_t packet_type, uint16_t channel, uint } sm_done_for_handle(sm_conn->sm_handle); - break; case SM_PH2_W4_CONNECTION_ENCRYPTED: @@ -4394,6 +4393,9 @@ void sm_request_pairing(hci_con_handle_t con_handle){ break; } break; + case SM_GENERAL_REENCRYPTION_FAILED: + sm_conn->sm_engine_state = SM_INITIATOR_PH1_W2_SEND_PAIRING_REQUEST; + break; case SM_GENERAL_IDLE: sm_conn->sm_pairing_requested = 1; break;