summaryrefslogtreecommitdiff
path: root/src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2021-02-02 22:09:00 +0100
committerJean-François Milants <jf@codingfield.com>2021-02-02 22:09:00 +0100
commitd90b7274fa8bbfa09f79660b45b550d91f7b0125 (patch)
tree434e4aa362b0083eb9df7bea4f1358787174e5b4 /src/libs/mynewt-nimble/nimble/host/src/ble_l2cap_sig.c
parent9c35b6fe5dc889b589b979dd7c650c70f302854b (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.c24
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();