[mac] make sure network name is always updated (#3246)

This commit is contained in:
Sergey Polyakov
2018-11-01 10:23:32 -07:00
committed by Jonathan Hui
parent 53ff24a6b4
commit 706b393a7b
+7 -6
View File
@@ -126,6 +126,7 @@ Mac::Mac(Instance &aInstance)
mExtAddress.GenerateRandom();
mCcaSuccessRateTracker.Reset();
memset(&mCounters, 0, sizeof(otMacCounters));
memset(&mNetworkName, 0, sizeof(otNetworkName));
otPlatRadioEnable(&GetInstance());
@@ -511,15 +512,15 @@ otError Mac::SetNetworkName(const char *aNetworkName)
otError Mac::SetNetworkName(const char *aBuffer, uint8_t aLength)
{
otError error = OT_ERROR_NONE;
uint8_t len = static_cast<uint8_t>(strnlen(aBuffer, aLength));
otError error = OT_ERROR_NONE;
uint8_t newLen = static_cast<uint8_t>(strnlen(aBuffer, aLength));
VerifyOrExit(len <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS);
VerifyOrExit(memcmp(mNetworkName.m8, aBuffer, len) != 0,
VerifyOrExit(newLen <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS);
VerifyOrExit(newLen != strlen(mNetworkName.m8) || memcmp(mNetworkName.m8, aBuffer, newLen) != 0,
GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_NETWORK_NAME));
memcpy(mNetworkName.m8, aBuffer, len);
mNetworkName.m8[len] = 0;
memcpy(mNetworkName.m8, aBuffer, newLen);
mNetworkName.m8[newLen] = 0;
GetNotifier().Signal(OT_CHANGED_THREAD_NETWORK_NAME);
exit: