disable commissioner related CoAP resource before accepted (#1573)

* disable commissioner related coap before accepted
This commit is contained in:
Buke Po
2017-04-10 21:35:58 -07:00
committed by Jonathan Hui
parent f7590571c2
commit c3b565d550
2 changed files with 28 additions and 3 deletions
+25 -3
View File
@@ -79,9 +79,6 @@ Commissioner::Commissioner(ThreadNetif &aThreadNetif):
mNetif(aThreadNetif)
{
memset(mJoiners, 0, sizeof(mJoiners));
mNetif.GetCoapServer().AddResource(mRelayReceive);
mNetif.GetCoapServer().AddResource(mDatasetChanged);
mNetif.GetSecureCoapServer().AddResource(mJoinerFinalize);
}
otInstance *Commissioner::GetInstance(void)
@@ -89,6 +86,20 @@ otInstance *Commissioner::GetInstance(void)
return mNetif.GetInstance();
}
void Commissioner::AddCoapResources(void)
{
mNetif.GetCoapServer().AddResource(mRelayReceive);
mNetif.GetCoapServer().AddResource(mDatasetChanged);
mNetif.GetSecureCoapServer().AddResource(mJoinerFinalize);
}
void Commissioner::RemoveCoapResources(void)
{
mNetif.GetCoapServer().RemoveResource(mRelayReceive);
mNetif.GetCoapServer().AddResource(mDatasetChanged);
mNetif.GetSecureCoapServer().AddResource(mJoinerFinalize);
}
ThreadError Commissioner::Start(void)
{
ThreadError error = kThreadError_None;
@@ -118,6 +129,7 @@ ThreadError Commissioner::Stop(void)
mNetif.GetSecureCoapServer().Stop();
mState = kCommissionerStateDisabled;
RemoveCoapResources();
mTransmitAttempts = 0;
mTimer.Stop();
@@ -642,7 +654,9 @@ void Commissioner::HandleLeaderPetitionResponse(Coap::Header *aHeader, Message *
VerifyOrExit(sessionId.IsValid());
mSessionId = sessionId.GetCommissionerSessionId();
AddCoapResources();
mState = kCommissionerStateActive;
mTransmitAttempts = 0;
mTimer.Start(Timer::SecToMsec(kKeepAliveTimeout) / 2);
@@ -740,6 +754,12 @@ void Commissioner::HandleLeaderKeepAliveResponse(Coap::Header *aHeader, Message
mTimer.Start(Timer::SecToMsec(kKeepAliveTimeout) / 2);
exit:
if (mState != kCommissionerStateActive)
{
RemoveCoapResources();
}
otLogFuncExit();
}
@@ -764,6 +784,8 @@ void Commissioner::HandleRelayReceive(Coap::Header &aHeader, Message &aMessage,
otLogFuncEntry();
VerifyOrExit(mState == kCommissionerStateActive, error = kThreadError_InvalidState);
VerifyOrExit(aHeader.GetType() == kCoapTypeNonConfirmable &&
aHeader.GetCode() == kCoapRequestPost);
+3
View File
@@ -209,6 +209,9 @@ private:
kRemoveJoinerDelay = 20, ///< Delay to remove successfully joined joiner
};
void AddCoapResources(void);
void RemoveCoapResources(void);
static void HandleTimer(void *aContext);
void HandleTimer(void);