SharpCifs.Smb.SmbFile.GetFirstAddress C# (CSharp) Method

GetFirstAddress() private method

private GetFirstAddress ( ) : UniAddress
return UniAddress
        internal virtual UniAddress GetFirstAddress()
        {
            AddressIndex = 0;
            string host = Url.GetHost();
            string path = Url.AbsolutePath;
            string query = Url.GetQuery();

            if (Addresses != null && Addresses.Length > 0)
            {
                return GetNextAddress();
            }

            if (query != null)
            {
                string server = QueryLookup(query, "server");
                if (!string.IsNullOrEmpty(server))
                {
                    Addresses = new UniAddress[1];
                    Addresses[0] = UniAddress.GetByName(server);
                    return GetNextAddress();
                }
                string address = QueryLookup(query, "address");
                if (!string.IsNullOrEmpty(address))
                {
                    byte[] ip = Extensions.GetAddressByName(address).GetAddressBytes();
                    Addresses = new UniAddress[1];
                    //addresses[0] = new UniAddress(IPAddress.Parse(host, ip));
                    Addresses[0] = new UniAddress(IPAddress.Parse(host));
                    return GetNextAddress();
                }
            }
            if (host.Length == 0)
            {
                try
                {
                    NbtAddress addr = NbtAddress.GetByName(NbtAddress.MasterBrowserName, 0x01, null);
                    Addresses = new UniAddress[1];
                    Addresses[0] = UniAddress.GetByName(addr.GetHostAddress());
                }
                catch (UnknownHostException uhe)
                {
                    NtlmPasswordAuthentication.InitDefaults();
                    if (NtlmPasswordAuthentication.DefaultDomain.Equals("?"))
                    {
                        throw;
                    }
                    Addresses = UniAddress.GetAllByName(NtlmPasswordAuthentication.DefaultDomain, true
                        );
                }
            }
            else
            {
                if (path.Length == 0 || path.Equals("/"))
                {
                    Addresses = UniAddress.GetAllByName(host, true);
                }
                else
                {
                    Addresses = UniAddress.GetAllByName(host, false);
                }
            }
            return GetNextAddress();
        }