mirror of
https://github.com/espressif/openthread.git
synced 2026-09-02 23:30:07 +00:00
disable commissioner related CoAP resource before accepted (#1573)
* disable commissioner related coap before accepted
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user