From 5e4d07cb230ff2e2e4e20c77d56a1e3d6ecfa689 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Thu, 7 Mar 2019 09:12:56 -0800 Subject: [PATCH] [dtls] fix bug in resetting dtls state on error (#3653) --- src/core/meshcop/dtls.cpp | 6 ++++-- src/core/meshcop/dtls.hpp | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) 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,