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 <michal.narajow...@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 a...@apache.org.