SharpCifs.Smb.SmbTransport.__getDfsReferrals C# (CSharp) Method

__getDfsReferrals() private method

private __getDfsReferrals ( NtlmPasswordAuthentication auth, string path, int rn ) : SharpCifs.Smb.DfsReferral[]
auth NtlmPasswordAuthentication
path string
rn int
return SharpCifs.Smb.DfsReferral[]
        internal virtual DfsReferral[] __getDfsReferrals(NtlmPasswordAuthentication auth,
            string path, int rn)
        {
            SmbTree ipc = GetSmbSession(auth).GetSmbTree("IPC$", null);
            Trans2GetDfsReferralResponse resp = new Trans2GetDfsReferralResponse();
            ipc.Send(new Trans2GetDfsReferral(path), resp);
            if (rn == 0 || resp.NumReferrals < rn)
            {
                rn = resp.NumReferrals;
            }
            DfsReferral[] drs = new DfsReferral[rn];
            string[] arr = new string[4];
            long expiration = Runtime.CurrentTimeMillis() + Dfs.Ttl * 1000;
            for (int di = 0; di < drs.Length; di++)
            {
                DfsReferral dr = new DfsReferral();
                dr.ResolveHashes = auth.HashesExternal;
                dr.Ttl = resp.Referrals[di].Ttl;
                dr.Expiration = expiration;
                if (path.Equals(string.Empty))
                {
                    dr.Server = Runtime.Substring(resp.Referrals[di].Path, 1).ToLower();
                }
                else
                {
                    DfsPathSplit(resp.Referrals[di].Node, arr);
                    dr.Server = arr[1];
                    dr.Share = arr[2];
                    dr.Path = arr[3];
                }
                dr.PathConsumed = resp.PathConsumed;
                drs[di] = dr;
            }
            return drs;
        }
    }