diff --git a/nRFMeshProvision/Layers/Access Layer/AccessLayer.swift b/nRFMeshProvision/Layers/Access Layer/AccessLayer.swift index 33ef58d09..d8a105ad3 100644 --- a/nRFMeshProvision/Layers/Access Layer/AccessLayer.swift +++ b/nRFMeshProvision/Layers/Access Layer/AccessLayer.swift @@ -238,8 +238,7 @@ internal class AccessLayer { // Set timers for the acknowledged messages. // Acknowledged messages sent to a Group address won't await a Status. - if message is AcknowledgedMeshMessage, - destination.address.isUnicast { + if message.isAcknowledged, destination.address.isUnicast { createReliableContext(for: pdu, sentFrom: element, withTtl: initialTtl, using: keySet) } diff --git a/nRFMeshProvision/Layers/Lower Transport Layer/LowerTransportLayer.swift b/nRFMeshProvision/Layers/Lower Transport Layer/LowerTransportLayer.swift index 0262559c6..3808b4bc4 100644 --- a/nRFMeshProvision/Layers/Lower Transport Layer/LowerTransportLayer.swift +++ b/nRFMeshProvision/Layers/Lower Transport Layer/LowerTransportLayer.swift @@ -254,7 +254,12 @@ internal class LowerTransportLayer { from: localElement, to: pdu.destination) } catch { logger?.w(.lowerTransport, error) - if !pdu.message!.isAcknowledged { + if pdu.message!.isAcknowledged && pdu.destination.address.isUnicast { + // Acknowledged messages sent to a Unicast Address will be retransmitted + // by the Access Layer. Nothing to be done here. + // See: https://github.com/NordicSemiconductor/IOS-nRF-Mesh-Library/issues/599 + } else { + // networkManager.notifyAbout(error: error, duringSendingMessage: pdu.message!, from: localElement, to: pdu.destination) } diff --git a/nRFMeshProvision/Layers/NetworkManager.swift b/nRFMeshProvision/Layers/NetworkManager.swift index 5b699cb56..6f5a3324d 100644 --- a/nRFMeshProvision/Layers/NetworkManager.swift +++ b/nRFMeshProvision/Layers/NetworkManager.swift @@ -158,7 +158,7 @@ internal class NetworkManager { // If retransmission was configured, start the timer that will retransmit. // There is no need to retransmit acknowledged messages, as they have their // own retransmission mechanism. - if !(message is AcknowledgedMeshMessage) { + if !message.isAcknowledged { var count = publish.retransmit.count if count > 0 { let interval: TimeInterval = Double(publish.retransmit.interval) / 1000