3.3.5.1 Lease TTL Timer
When the Lease TTL Timer is fired, an implementation of the protocol MUST evaluate lease renewal as specified below.
If there are no Sponsor Info instances in the Lease Data's SponsorList, the implementation MUST set the CurrentState of the associated Lease Data to "Expired", and MUST unmarshal the Server Object, as specified in [MS-NRTP] section 3.2.4.3.
If there are Sponsor Info instances in the Lease Data's SponsorList, then the Renewal method of the first Sponsor Info's Proxy MUST be called. The Sponsorship Timer MUST be set to fire after the duration indicated by SponsorshipTimeout. If the method returns successfully and the Return Value is a time duration greater than 0, the implementation MUST do the following:
Extend the TTL of the Server Object by that TimeSpan.
Reset the timer to fire after the new TTL.
Set the Sponsor Info's RenewalTime field to the time duration that was returned.
Reposition the Sponsor Info with the new RenewalTime in the SponsorList, such that the list is sorted in decreasing order of RenewalTime.
If any of the following conditions occur, the renewal call is considered unsuccessful, and the implementation MUST remove the Sponsor Info from the SponsorList.
The SponsorshipTimer fired before the Renewal method completed.
The Renewal method did not return within the duration specified in SponsorshipTimeout.
The Renewal method threw an Exception.
The Renewal method returned a TimeSpan of 0.
If the renewal call was unsuccessful, the implementation MUST repeat the renewal process with the next Sponsor Info in the SponsorList.
If there are no Sponsor Info instances left in the SponsorList, the implementation MUST do the following:
Set the CurrentState of the Lease Data to "Expired".
Unmarshal the associated Server Object as specified in [MS-NRTP]section 3.2.4.3.
Unmarshal the Lease Object as specified in [MS-NRTP] section 3.2.4.3.