3.3.5.22.2 Processing a Lease Acknowledgment

The server MUST locate the session, as specified in section 3.3.5.2.9.

The server MUST locate the tree connection, as specified in section 3.3.5.2.11.

Next, the server MUST locate the Lease Table by performing a lookup in GlobalLeaseTableList using Connection.ClientGuid as the lookup key. If no lease table is found, the server MUST fail the request with STATUS_OBJECT_NAME_NOT_FOUND.

The server MUST locate the lease on which the client is acknowledging a lease break by performing a lookup in LeaseTable.LeaseList using the LeaseKey of the request as the lookup key. If no lease is found, the server MUST fail the request with STATUS_OBJECT_NAME_NOT_FOUND.

If Lease.Breaking is FALSE, the server MUST fail the request with STATUS_UNSUCCESSFUL.

If LeaseState is not <= Lease.BreakToLeaseState, the server MUST fail the request with STATUS_REQUEST_NOT_ACCEPTED.

The server completes the lease break request received from the object store as described in section 3.3.4.7. The server MUST set Lease.LeaseState to LeaseState received in the request, and MUST set Lease.Breaking to FALSE.

The server then MUST construct a lease break response using the syntax specified in section 2.2.25 with the following values:

  • LeaseKey MUST be set to Lease.LeaseKey.

  • LeaseState MUST be set to Lease.LeaseState.

This response MUST then be sent to the client.

The status code returned by this operation MUST be one of those defined in [MS-ERREF]. Common status codes returned by this operation include:

  • STATUS_ACCESS_DENIED

  • STATUS_OBJECT_NAME_NOT_FOUND

  • STATUS_INVALID_OPLOCK_PROTOCOL

  • STATUS_INVALID_PARAMETER

  • STATUS_INVALID_DEVICE_STATE

  • STATUS_NETWORK_NAME_DELETED

  • STATUS_USER_SESSION_DELETED

Show: