/// <exception cref="SharpCifs.Smb.SmbException"></exception>
internal virtual void CheckStatus(ServerMessageBlock req, ServerMessageBlock resp
)
{
resp.ErrorCode = SmbException.GetStatusByCode(resp.ErrorCode);
switch (resp.ErrorCode)
{
case NtStatus.NtStatusOk:
{
break;
}
case NtStatus.NtStatusAccessDenied:
case NtStatus.NtStatusWrongPassword:
case NtStatus.NtStatusLogonFailure:
case NtStatus.NtStatusAccountRestriction:
case NtStatus.NtStatusInvalidLogonHours:
case NtStatus.NtStatusInvalidWorkstation:
case NtStatus.NtStatusPasswordExpired:
case NtStatus.NtStatusAccountDisabled:
case NtStatus.NtStatusAccountLockedOut:
case NtStatus.NtStatusTrustedDomainFailure:
{
throw new SmbAuthException(resp.ErrorCode);
}
case NtStatus.NtStatusPathNotCovered:
{
if (req.Auth == null)
{
throw new SmbException(resp.ErrorCode, null);
}
DfsReferral dr = GetDfsReferrals(req.Auth, req.Path, 1);
if (dr == null)
{
throw new SmbException(resp.ErrorCode, null);
}
SmbFile.Dfs.Insert(req.Path, dr);
throw dr;
}
case unchecked ((int)(0x80000005)):
{
break;
}
case NtStatus.NtStatusMoreProcessingRequired:
{
break;
}
default:
{
throw new SmbException(resp.ErrorCode, null);
}
}
if (resp.VerifyFailed)
{
throw new SmbException("Signature verification failed.");
}
}