3.2.5.13.1 Behavior Common to Both Private Mailbox and Public Folder Logon

Each invocation of this ROP accumulates data from the client until the client makes a final call with HasFinished set to TRUE. The server aggregates the data across multiple invocations and it validates the entire data set before persisting to permanent storage.

The server determines whether the current invocation is a continuation of a previous invocation by examining the FolderId and DataOffset fields. If the FID has changed since the last invocation, or the DataOffset value does not equal the amount of data already written, the server MUST assume the previous operation was aborted and MUST dispose of any accumulated data. In addition, if the current invocation's DataOffset isn't zero, the ROP MUST fail with a ReturnValue of 0x80004005.

Once the client invokes this ROP with HasFinished set to TRUE, the server validates the accumulated data and verifies that it is a properly formed serialized IDSET with REPLGUID as specified in [MS-OXCFXICS] section 2.2.2.4.2. If the data is not properly formed, the ROP SHOULD<48> fail with a ReturnValue of 0x8004011B.

After performing the specific behavior in the following sections, the server records, in UTC, the current system time on the appropriate row in the table.

The following specific error codes apply to this ROP. Other possible error codes are specified in [MS-OXCDATA] section 2.4.

Name

Value

Meaning

ecNone

0x00000000

Success.

ecError

0x80004005

The DataOffset didn't match the size of the data written so far OR the FolderId didn't match the value on the previous call, AND THEN DataOffset wasn't zero.

ecCorruptData

0x8004011B

The data cumulatively written could not be parsed as a proper serialized IDSET with REPLGUIDs, as specified in [MS-OXCFXICS] section 2.2.2.4.2.