You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2018/03/12 13:37:55 UTC
[mynewt-nimble] 21/32: mesh: Ignore segments of cancelled message
This is an automated email from the ASF dual-hosted git repository.
andk pushed a commit to branch new-master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit 7ed968551eab2f54dfb5ca0d995e2679ed1a9fb3
Author: MichaĆ Narajowski <mi...@codecoup.pl>
AuthorDate: Tue Feb 20 14:25:30 2018 +0100
mesh: Ignore segments of cancelled message
This fixes the issue when after incomplete timer expiration
host sent ACK.
The host failed in two cases:
1. Sending ACK right after the incomplete timer expiration;
2. Sending ACK from new RX context. Now, seq_auth of cancelled
message is not cleaned on RX reset, so segments of cancelled message
will be discarded when resend.
According to the Mesh Profile v1.0
"When the incomplete timer expires, the lower transport layer
shall consider that the message being received has failed and
cancel the acknowledgment timer. Any segment of a canceled
message shall be ignored."
X-Original-Commit: 50e7d632932c4188849aee89e0d23e2207352601
---
nimble/host/mesh/src/transport.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/nimble/host/mesh/src/transport.c b/nimble/host/mesh/src/transport.c
index 4ae20f3..918af1f 100644
--- a/nimble/host/mesh/src/transport.c
+++ b/nimble/host/mesh/src/transport.c
@@ -1009,9 +1009,7 @@ static void seg_ack(struct os_event *work)
if (k_uptime_get_32() - rx->last > K_SECONDS(60)) {
BT_WARN("Incomplete timer expired");
- send_ack(rx->sub, rx->dst, rx->src, rx->ttl,
- &rx->seq_auth, 0, rx->obo);
- seg_rx_reset(rx, true);
+ seg_rx_reset(rx, false);
if (IS_ENABLED(CONFIG_BT_TESTING)) {
bt_test_mesh_trans_incomp_timer_exp();
--
To stop receiving notification emails like this one, please contact
andk@apache.org.