3.3.4.4.8 COMM_COMMAND Is CMD_RECEIVING_STAGE

The upstream partner is sending the staging file to the downstream partner.

The server MUST validate the following:

  • P_IN.COMM_CXTION MUST exist.

  • CO_IN.ChangeOrderGuid MUST be a GUID.

  • P_IN.COMM_CXTION MUST be an inbound connection that has joined with the upstream partner.

  • Validate the RPC call MUST use either RPC_C_AUTHN_GSS_KERBEROS or RPC_C_AUTH_GSS_NEGOTIATE.

If the above test fails, the server MUST NOT reply to the client.

If the above test passes:

  • If all parts of the file have been sent, the server MUST extract the staging file header from the first blocks, and then link all the data together to form an array. Decompress the staging file if it is compressed. Then, perform a backup write (as specified in [MS-BKUP]) to the local file system to restore the file or folder. If the server is unable to link all the data together, to decompress the staging file, or to do a backup write to the local file system, it MUST abort the request. Otherwise, the server MUST send a CMD_REMOTE_CO_DONE packet (see section 3.3.4.4.6.2).

  • If some part of the file has not been sent yet, the local member MUST acknowledge the call by a CMD_SEND_STAGE packet (see section 3.3.4.4.6.1) to request the next sequential block of staging files from the upstream partner. (The upstream partner chops the staging file into blocks. These blocks are sent to the downstream partner one by one, starting from the first block that contains the staging header and the first part of the staging file data. A later block MUST NOT be processed unless the previous block has been downloaded successfully.)

See sections 4.2, 4.4.7, 4.5.1.3, 4.5.1.5, 4.5.2.3, 4.5.4.3, and 4.5.6.3 for examples of the use of this command.