You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2017/04/07 18:45:00 UTC
[26/50] [abbrv] incubator-mynewt-core git commit: MYNEWT-702 BLE Host
- duplicate update entries
MYNEWT-702 BLE Host - duplicate update entries
Fix similar issue for L2CAP updates.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/e33dbd45
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/e33dbd45
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/e33dbd45
Branch: refs/heads/master
Commit: e33dbd45aa2de1209ef36d2cc0cf7016d97f2828
Parents: f601422
Author: Christopher Collins <cc...@apache.org>
Authored: Mon Apr 3 18:23:58 2017 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Mon Apr 3 18:29:15 2017 -0700
----------------------------------------------------------------------
net/nimble/host/src/ble_gap.c | 6 ++++--
net/nimble/host/test/src/ble_gap_test.c | 9 +++++++++
2 files changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e33dbd45/net/nimble/host/src/ble_gap.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_gap.c b/net/nimble/host/src/ble_gap.c
index b494613..80bfa7a 100644
--- a/net/nimble/host/src/ble_gap.c
+++ b/net/nimble/host/src/ble_gap.c
@@ -2620,6 +2620,9 @@ ble_gap_update_entry_free(struct ble_gap_update_entry *entry)
int rc;
if (entry != NULL) {
+#if MYNEWT_VAL(BLE_HS_DEBUG)
+ memset(entry, 0xff, sizeof *entry);
+#endif
rc = os_memblock_put(&ble_gap_update_entry_pool, entry);
BLE_HS_DBG_ASSERT_EVAL(rc == 0);
}
@@ -2928,8 +2931,6 @@ done:
if (rc == 0) {
ble_hs_timer_resched();
} else {
- ble_gap_update_entry_free(entry);
-
/* If the l2cap_params struct is populated, the only error is that the
* controller doesn't support the connection parameters request
* procedure. In this case, fallback to the L2CAP update procedure.
@@ -2945,6 +2946,7 @@ done:
if (rc == 0) {
SLIST_INSERT_HEAD(&ble_gap_update_entries, entry, next);
} else {
+ ble_gap_update_entry_free(entry);
STATS_INC(ble_gap_stats, update_fail);
}
ble_hs_unlock();
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e33dbd45/net/nimble/host/test/src/ble_gap_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/test/src/ble_gap_test.c b/net/nimble/host/test/src/ble_gap_test.c
index 8471d5b..d161ad9 100644
--- a/net/nimble/host/test/src/ble_gap_test.c
+++ b/net/nimble/host/test/src/ble_gap_test.c
@@ -1854,6 +1854,15 @@ ble_gap_test_util_update_l2cap(struct ble_gap_upd_params *params,
TEST_ASSERT(ble_gap_dbg_update_active(2));
+ /* Attempt two duplicate updates; ensure BLE_HS_EALREADY gets returned
+ * both times. Make sure initial update still completes successfully
+ * (MYNEWT-702).
+ */
+ rc = ble_hs_test_util_conn_update(2, params, 0);
+ TEST_ASSERT(rc == BLE_HS_EALREADY);
+ rc = ble_hs_test_util_conn_update(2, params, 0);
+ TEST_ASSERT(rc == BLE_HS_EALREADY);
+
l2cap_params.itvl_min = params->itvl_min;
l2cap_params.itvl_max = params->itvl_max;
l2cap_params.slave_latency = params->latency;