diff options
author | Jean-François Milants <jf@codingfield.com> | 2021-02-02 22:09:00 +0100 |
---|---|---|
committer | Jean-François Milants <jf@codingfield.com> | 2021-02-02 22:09:00 +0100 |
commit | d90b7274fa8bbfa09f79660b45b550d91f7b0125 (patch) | |
tree | 434e4aa362b0083eb9df7bea4f1358787174e5b4 /src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c | |
parent | 9c35b6fe5dc889b589b979dd7c650c70f302854b (diff) |
Update to nimble 1.3 master branch commit 82153e744833821e20e9a8b0d61c38b2b0dbcfe1
WARNING : heartbeat task is disabled!
Diffstat (limited to 'src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c')
-rw-r--r-- | src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c b/src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c index bb4d8a5a..ad81c64a 100644 --- a/src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c +++ b/src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c @@ -508,8 +508,13 @@ ble_l2cap_sig_update(uint16_t conn_handle, STATS_INC(ble_l2cap_stats, update_init); ble_hs_lock(); - ble_hs_misc_conn_chan_find_reqd(conn_handle, BLE_L2CAP_CID_SIG, - &conn, &chan); + rc = ble_hs_misc_conn_chan_find_reqd(conn_handle, BLE_L2CAP_CID_SIG, + &conn, &chan); + if (rc != 0) { + ble_hs_unlock(); + goto done; + } + master = conn->bhc_flags & BLE_HS_CONN_F_MASTER; ble_hs_unlock(); @@ -656,8 +661,8 @@ ble_l2cap_sig_coc_connect_cb(struct ble_l2cap_sig_proc *proc, int status) continue; } - if ((status == 0) && (chan->dcid != 0)) { - ble_l2cap_event_coc_connected(chan, status); + if (chan->dcid != 0) { + ble_l2cap_event_coc_connected(chan, 0); /* Let's forget about connected channel now. * Not connected will be freed later on. */ @@ -859,6 +864,7 @@ ble_l2cap_sig_credit_base_reconfig_rsp_rx(uint16_t conn_handle, rsp = (struct ble_l2cap_sig_credit_base_reconfig_rsp *)(*om)->om_data; ble_l2cap_sig_coc_reconfig_cb(proc, (rsp->result > 0) ? BLE_HS_EREJECT : 0); + ble_l2cap_sig_proc_free(proc); return 0; } @@ -1061,7 +1067,15 @@ ble_l2cap_sig_credit_base_con_rsp_rx(uint16_t conn_handle, if (rsp->result) { rc = ble_l2cap_sig_coc_err2ble_hs_err(le16toh(rsp->result)); - goto done; + /* Below results means that some of the channels has not been created + * and we have to look closer into the response. + * Any other results means that all the connections has been refused. + */ + if ((rsp->result != BLE_L2CAP_COC_ERR_NO_RESOURCES) && + (rsp->result != BLE_L2CAP_COC_ERR_INVALID_SOURCE_CID) && + (rsp->result != BLE_L2CAP_COC_ERR_SOURCE_CID_ALREADY_USED)) { + goto done; + } } ble_hs_lock(); |