From 45480ccbb2fd5aa471d0bd85133983955e8f1f79 Mon Sep 17 00:00:00 2001 From: Buke Po Date: Sun, 12 Feb 2017 09:16:58 -0600 Subject: [PATCH] temporaily fix zero-length payload with payload marker (#1300) --- src/core/thread/network_diagnostic.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/core/thread/network_diagnostic.cpp b/src/core/thread/network_diagnostic.cpp index c6c3a9cc8..67bf92031 100644 --- a/src/core/thread/network_diagnostic.cpp +++ b/src/core/thread/network_diagnostic.cpp @@ -511,16 +511,18 @@ void NetworkDiagnostic::HandleDiagnosticGetRequest(Coap::Header &aHeader, Messag VerifyOrExit((message = mNetif.GetCoapServer().NewMessage(0)) != NULL, error = kThreadError_NoBufs); header.SetDefaultResponseHeader(aHeader); - - if (networkDiagnosticTlv.GetLength() > 0) - { - header.SetPayloadMarker(); - } + header.SetPayloadMarker(); SuccessOrExit(error = message->Append(header.GetBytes(), header.GetLength())); SuccessOrExit(error = FillRequestedTlvs(aMessage, *message, networkDiagnosticTlv)); + if (message->GetLength() == header.GetLength()) + { + // Remove Payload Marker if payload is actually empty. + message->SetLength(header.GetLength() - 1); + } + SuccessOrExit(error = mNetif.GetCoapServer().SendMessage(*message, messageInfo)); otLogInfoNetDiag("Sent diagnostic get response");