3.3.5.2.7 Handling Compounded Requests

If the NextCommand field in the SMB2 header of the request is not equal to 0, the server MUST process the received request as a compounded series of requests. The server MAY<215> fail requests in a compound chain which require asynchronous processing.

There are two different styles of compounded requests, which are described in the following subsections.

The two styles MUST NOT be intermixed in the same transport send, and in such a case, the server SHOULD<216> fail each of the requests with STATUS_INVALID_PARAMETER.

If the server implements SMB 3.x dialect family, for each request in the compounded chain the server MUST verify if any of the following conditions returns TRUE and, if so, disconnect the connection, as specified in section 3.3.7.1:

  • If Request.IsEncrypted is TRUE, this is the first request in the chain, and SessionId in the SMB2 header of the request is not equal to Request.TransformSessionId.

  • If Request.IsEncrypted is TRUE, this is not the first request in the chain, SMB2_FLAGS_RELATED_OPERATIONS is not set in the Flags field of the request, and SessionId in the SMB2 header of the request is not equal to Request.TransformSessionId.

Show: