mirror of
https://github.com/espressif/openthread.git
synced 2026-09-15 05:30:09 +00:00
Fix bugs in MGMT_ANNOUNCE_BEGIN.ntf/MGMT_ED_SCAN.qry/MGMT_PANID_QUERY.qry (#1732)
* Fix bugs in MGMT_ANNOUNCE_BEGIN.ntf/MGMT_ED_SCAN.qry/MGMT_PANID_QUERY.qry 1) specify mMeshLocal16 as source address for such notification or query 2) not SendEmptyAck for multicast notification or query 3) not re-selectsource for SendEmptyAck of unicast notification or query * update for comments
This commit is contained in:
@@ -106,6 +106,7 @@ ThreadError AnnounceBeginClient::SendRequest(uint32_t aChannelMask, uint8_t aCou
|
||||
period.SetPeriod(aPeriod);
|
||||
SuccessOrExit(error = message->Append(&period, sizeof(period)));
|
||||
|
||||
messageInfo.SetSockAddr(mNetif.GetMle().GetMeshLocal16());
|
||||
messageInfo.SetPeerAddr(aAddress);
|
||||
messageInfo.SetPeerPort(kCoapUdpPort);
|
||||
messageInfo.SetInterfaceId(mNetif.GetInterfaceId());
|
||||
|
||||
@@ -119,6 +119,7 @@ ThreadError EnergyScanClient::SendQuery(uint32_t aChannelMask, uint8_t aCount, u
|
||||
scanDuration.SetScanDuration(aScanDuration);
|
||||
SuccessOrExit(error = message->Append(&scanDuration, sizeof(scanDuration)));
|
||||
|
||||
messageInfo.SetSockAddr(mNetif.GetMle().GetMeshLocal16());
|
||||
messageInfo.SetPeerAddr(aAddress);
|
||||
messageInfo.SetPeerPort(kCoapUdpPort);
|
||||
messageInfo.SetInterfaceId(mNetif.GetInterfaceId());
|
||||
@@ -175,7 +176,6 @@ void EnergyScanClient::HandleReport(Coap::Header &aHeader, Message &aMessage, co
|
||||
mCallback(channelMask.GetMask(), energyList.list, energyList.tlv.GetLength(), mContext);
|
||||
}
|
||||
|
||||
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
|
||||
otLogInfoMeshCoP(GetInstance(), "sent energy scan report response");
|
||||
|
||||
@@ -104,6 +104,7 @@ ThreadError PanIdQueryClient::SendQuery(uint16_t aPanId, uint32_t aChannelMask,
|
||||
panId.SetPanId(aPanId);
|
||||
SuccessOrExit(error = message->Append(&panId, sizeof(panId)));
|
||||
|
||||
messageInfo.SetSockAddr(mNetif.GetMle().GetMeshLocal16());
|
||||
messageInfo.SetPeerAddr(aAddress);
|
||||
messageInfo.SetPeerPort(kCoapUdpPort);
|
||||
messageInfo.SetInterfaceId(mNetif.GetInterfaceId());
|
||||
@@ -154,7 +155,6 @@ void PanIdQueryClient::HandleConflict(Coap::Header &aHeader, Message &aMessage,
|
||||
mCallback(panId.GetPanId(), channelMask.GetMask(), mContext);
|
||||
}
|
||||
|
||||
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
|
||||
otLogInfoMeshCoP(GetInstance(), "sent panid query conflict response");
|
||||
|
||||
@@ -439,7 +439,7 @@ void AddressResolver::HandleAddressError(Coap::Header &aHeader, Message &aMessag
|
||||
|
||||
otLogInfoArp(GetInstance(), "Received address error notification");
|
||||
|
||||
if (!aMessageInfo.GetSockAddr().IsMulticast())
|
||||
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
|
||||
{
|
||||
if (mNetif.GetCoapServer().SendEmptyAck(aHeader, aMessageInfo) == kThreadError_None)
|
||||
{
|
||||
|
||||
@@ -125,10 +125,11 @@ void AnnounceBeginServer::HandleRequest(Coap::Header &aHeader, Message &aMessage
|
||||
|
||||
SendAnnounce(channelMask.GetMask(), count.GetCount(), period.GetPeriod());
|
||||
|
||||
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
|
||||
otLogInfoMeshCoP(GetInstance(), "sent announce begin response");
|
||||
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
|
||||
{
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
otLogInfoMeshCoP(GetInstance(), "sent announce begin response");
|
||||
}
|
||||
|
||||
exit:
|
||||
return;
|
||||
|
||||
@@ -118,10 +118,11 @@ void EnergyScanServer::HandleRequest(Coap::Header &aHeader, Message &aMessage, c
|
||||
|
||||
mCommissioner = aMessageInfo.GetPeerAddr();
|
||||
|
||||
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
|
||||
otLogInfoMeshCoP(GetInstance(), "sent energy scan query response");
|
||||
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
|
||||
{
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
otLogInfoMeshCoP(GetInstance(), "sent energy scan query response");
|
||||
}
|
||||
|
||||
exit:
|
||||
return;
|
||||
|
||||
@@ -96,10 +96,11 @@ void PanIdQueryServer::HandleQuery(Coap::Header &aHeader, Message &aMessage, con
|
||||
mPanId = panId.GetPanId();
|
||||
mTimer.Start(kScanDelay);
|
||||
|
||||
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
|
||||
otLogInfoMeshCoP(GetInstance(), "sent panid query response");
|
||||
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
|
||||
{
|
||||
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
|
||||
otLogInfoMeshCoP(GetInstance(), "sent panid query response");
|
||||
}
|
||||
|
||||
exit:
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user