mirror of
https://github.com/espressif/openthread.git
synced 2026-08-14 06:37:46 +00:00
[srp-server] check allocated UpdateMetadata is not nullptr (#7717)
This commit is contained in:
@@ -1192,20 +1192,32 @@ void Server::HandleUpdate(Host &aHost, const MessageMetadata &aMetadata)
|
||||
}
|
||||
|
||||
exit:
|
||||
if ((error == kErrorNone) && (mServiceUpdateHandler != nullptr))
|
||||
InformUpdateHandlerOrCommit(error, aHost, aMetadata);
|
||||
}
|
||||
|
||||
void Server::InformUpdateHandlerOrCommit(Error aError, Host &aHost, const MessageMetadata &aMetadata)
|
||||
{
|
||||
if ((aError == kErrorNone) && (mServiceUpdateHandler != nullptr))
|
||||
{
|
||||
UpdateMetadata *update = UpdateMetadata::Allocate(GetInstance(), aHost, aMetadata);
|
||||
|
||||
mOutstandingUpdates.Push(*update);
|
||||
mOutstandingUpdatesTimer.FireAtIfEarlier(update->GetExpireTime());
|
||||
if (update != nullptr)
|
||||
{
|
||||
mOutstandingUpdates.Push(*update);
|
||||
mOutstandingUpdatesTimer.FireAtIfEarlier(update->GetExpireTime());
|
||||
|
||||
LogInfo("SRP update handler is notified (updatedId = %u)", update->GetId());
|
||||
mServiceUpdateHandler(update->GetId(), &aHost, kDefaultEventsHandlerTimeout, mServiceUpdateHandlerContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
CommitSrpUpdate(error, aHost, aMetadata);
|
||||
LogInfo("SRP update handler is notified (updatedId = %u)", update->GetId());
|
||||
mServiceUpdateHandler(update->GetId(), &aHost, kDefaultEventsHandlerTimeout, mServiceUpdateHandlerContext);
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
aError = kErrorNoBufs;
|
||||
}
|
||||
|
||||
CommitSrpUpdate(aError, aHost, aMetadata);
|
||||
|
||||
exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void Server::SendResponse(const Dns::UpdateHeader & aHeader,
|
||||
|
||||
@@ -887,6 +887,7 @@ private:
|
||||
|
||||
ServiceUpdateId AllocateId(void) { return mServiceUpdateId++; }
|
||||
|
||||
void InformUpdateHandlerOrCommit(Error aError, Host &aHost, const MessageMetadata &aMetadata);
|
||||
void CommitSrpUpdate(Error aError, Host &aHost, const MessageMetadata &aMessageMetadata);
|
||||
void CommitSrpUpdate(Error aError, UpdateMetadata &aUpdateMetadata);
|
||||
void CommitSrpUpdate(Error aError,
|
||||
|
||||
Reference in New Issue
Block a user