diff --git a/src/core/meshcop/dtls.cpp b/src/core/meshcop/dtls.cpp index 30c43e773..7deb0cdef 100644 --- a/src/core/meshcop/dtls.cpp +++ b/src/core/meshcop/dtls.cpp @@ -160,7 +160,7 @@ otError Dtls::Start(bool aClient, // do not handle new connection before guard time expired VerifyOrExit(mState == kStateStopped, rval = MBEDTLS_ERR_SSL_TIMEOUT); - mState = kStateConnecting; + mState = kStateInitializing; mbedtls_ssl_init(&mSsl); mbedtls_ssl_config_init(&mConf); @@ -258,10 +258,12 @@ otError Dtls::Start(bool aClient, } #endif // OPENTHREAD_ENABLE_APPLICATION_COAP_SECURE + mState = kStateConnecting; + Process(); exit: - if ((mState == kStateConnecting) && (rval != 0)) + if ((mState == kStateInitializing) && (rval != 0)) { mState = kStateStopped; FreeMbedtls(); diff --git a/src/core/meshcop/dtls.hpp b/src/core/meshcop/dtls.hpp index 8c5c50bf6..99324056a 100644 --- a/src/core/meshcop/dtls.hpp +++ b/src/core/meshcop/dtls.hpp @@ -82,6 +82,7 @@ public: enum State { kStateStopped = 0, + kStateInitializing, kStateConnecting, kStateConnected, kStateCloseNotify,