diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index 3455415ce..5c015a91e 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -373,6 +373,25 @@ void DatasetManager::Get(const Coap::Header &aHeader, const Message &aMessage, offset += sizeof(tlv) + tlv.GetLength(); } + // MGMT_PENDING_GET.rsp must include Delay Timer TLV (Thread 1.1.1 Section 8.7.5.4) + if (length != 0 && strcmp(mUriGet, OT_URI_PATH_PENDING_GET) == 0) + { + uint16_t i; + + for (i = 0; i < length; i++) + { + if (tlvs[i] == Tlv::kDelayTimer) + { + break; + } + } + + if (i == length && (i + 1u) <= sizeof(tlvs)) + { + tlvs[length++] = Tlv::kDelayTimer; + } + } + SendGetResponse(aHeader, aMessageInfo, tlvs, length); }