mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-10-14 17:57:22 +00:00
nimble/host: Connect EATT when encryption is enabled
Some peers reject connection to EATT PSM if encryption is not enabled. Since EATT requires any PDUs to be sent only on encrypted link we can postpone initiating EATT connection until encryption with no real drawbacks.
This commit is contained in:
@@ -450,15 +450,20 @@ ble_eatt_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
struct ble_eatt *eatt;
|
struct ble_eatt *eatt;
|
||||||
|
|
||||||
switch (event->type) {
|
switch (event->type) {
|
||||||
case BLE_GAP_EVENT_CONNECT:
|
case BLE_GAP_EVENT_ENC_CHANGE:
|
||||||
if (event->connect.status != 0) {
|
if (event->enc_change.status != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
BLE_EATT_LOG_DEBUG("eatt: Device connected, waiting to write into "
|
/* don't try to connect if already connected */
|
||||||
"client supported features\n");
|
if (ble_eatt_find_by_conn_handle(event->enc_change.conn_handle)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
ble_npl_event_set_arg(&g_read_sup_srv_feat_ev, UINT_TO_POINTER(event->connect.conn_handle));
|
BLE_EATT_LOG_DEBUG("eatt: Encryption enabled, connecting EATT (conn_handle=0x%04x)\n",
|
||||||
|
event->enc_change.conn_handle);
|
||||||
|
|
||||||
|
ble_npl_event_set_arg(&g_read_sup_srv_feat_ev, UINT_TO_POINTER(event->enc_change.conn_handle));
|
||||||
ble_npl_eventq_put(ble_hs_evq_get(), &g_read_sup_srv_feat_ev);
|
ble_npl_eventq_put(ble_hs_evq_get(), &g_read_sup_srv_feat_ev);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user