Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

3.3.5.2.9 Verifying the Session

The server MUST look up the Session in Connection.SessionTable by using the SessionId in the SMB2 header of the request. If Connection.SessionTable is empty and Connection.ConstrainedConnection is TRUE, the server SHOULD<210> disconnect the connection. If Connection.SessionTable is not empty and SessionId is not found in Connection.SessionTable, the server MUST fail the request with STATUS_USER_SESSION_DELETED. If Connection.ConstrainedConnection is FALSE and Connection.SessionTable is empty, then the server MUST fail any request with STATUS_USER_SESSION_DELETED.

If a session is found and Session.State is Expired, the server MUST continue to process the SMB2 LOGOFF, SMB2 CLOSE, and SMB2 LOCK commands. If the command is not one of these, the server SHOULD<211> fail the request with STATUS_NETWORK_SESSION_EXPIRED.

If Session.State is InProgress, the server MUST continue to process the SMB2 LOGOFF, SMB2 CLOSE, and SMB2 LOCK commands. If the command is not one of these, the server MUST fail the request with an implementation-specific<212> error code.

If Connection.Dialect belongs to the SMB 3.x dialect family, Session.EncryptData is TRUE, and RejectUnencryptedAccess is TRUE, the server MUST locate the Request in Connection.RequestList for which Request.MessageId matches the MessageId value in the SMB2 header of the request. If Request.IsEncrypted is FALSE, the server MUST fail the request with STATUS_ACCESS_DENIED.

 
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.