From 02690328a85ce6fe84acf5000f7e37d35ba601c2 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Tue, 27 Sep 2022 09:43:20 -0700 Subject: [PATCH] [srp-server] lease info for a deleted service or host entry (#8206) This commit updates the `Srp::Server` to allow lease info (in particular the key-lease) to be retrieved for a deleted service or host entry. --- src/core/net/srp_server.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/core/net/srp_server.cpp b/src/core/net/srp_server.cpp index d04d1f7d0..7c86fedbf 100644 --- a/src/core/net/srp_server.cpp +++ b/src/core/net/srp_server.cpp @@ -1760,13 +1760,22 @@ TimeMilli Server::Service::GetKeyExpireTime(void) const void Server::Service::GetLeaseInfo(LeaseInfo &aLeaseInfo) const { TimeMilli now = TimerMilli::GetNow(); - TimeMilli expireTime = GetExpireTime(); TimeMilli keyExpireTime = GetKeyExpireTime(); aLeaseInfo.mLease = Time::SecToMsec(GetLease()); aLeaseInfo.mKeyLease = Time::SecToMsec(GetKeyLease()); - aLeaseInfo.mRemainingLease = (now <= expireTime) ? (expireTime - now) : 0; aLeaseInfo.mRemainingKeyLease = (now <= keyExpireTime) ? (keyExpireTime - now) : 0; + + if (!mIsDeleted) + { + TimeMilli expireTime = GetExpireTime(); + + aLeaseInfo.mRemainingLease = (now <= expireTime) ? (expireTime - now) : 0; + } + else + { + aLeaseInfo.mRemainingLease = 0; + } } bool Server::Service::MatchesInstanceName(const char *aInstanceName) const @@ -1974,13 +1983,22 @@ TimeMilli Server::Host::GetKeyExpireTime(void) const void Server::Host::GetLeaseInfo(LeaseInfo &aLeaseInfo) const { TimeMilli now = TimerMilli::GetNow(); - TimeMilli expireTime = GetExpireTime(); TimeMilli keyExpireTime = GetKeyExpireTime(); aLeaseInfo.mLease = Time::SecToMsec(GetLease()); aLeaseInfo.mKeyLease = Time::SecToMsec(GetKeyLease()); - aLeaseInfo.mRemainingLease = (now <= expireTime) ? (expireTime - now) : 0; aLeaseInfo.mRemainingKeyLease = (now <= keyExpireTime) ? (keyExpireTime - now) : 0; + + if (!IsDeleted()) + { + TimeMilli expireTime = GetExpireTime(); + + aLeaseInfo.mRemainingLease = (now <= expireTime) ? (expireTime - now) : 0; + } + else + { + aLeaseInfo.mRemainingLease = 0; + } } Error Server::Host::ProcessTtl(uint32_t aTtl)