diff --git a/MinecraftClient/Protocol/ProtocolHandler.cs b/MinecraftClient/Protocol/ProtocolHandler.cs index 30524dd7..e0a38e4b 100644 --- a/MinecraftClient/Protocol/ProtocolHandler.cs +++ b/MinecraftClient/Protocol/ProtocolHandler.cs @@ -14,7 +14,6 @@ namespace MinecraftClient.Protocol /// /// Handle login, session, server ping and provide a protocol handler for interacting with a minecraft server. /// - public static class ProtocolHandler { /// @@ -30,21 +29,20 @@ namespace MinecraftClient.Protocol try { Console.WriteLine("Resolving {0}...", domain); - var response = new DnDns.Query.DnsQueryRequest().Resolve("_minecraft._tcp." + domain, - DnDns.Enums.NsType.SRV, DnDns.Enums.NsClass.ANY, System.Net.Sockets.ProtocolType.Tcp); - var records = response.Answers //Order SRV records by priority and weight, then randomly - .Where(record => record is DnDns.Records.SrvRecord) - .Select(record => (DnDns.Records.SrvRecord)record) - .OrderBy(record => record.Priority) - .ThenByDescending(record => record.Weight) - .ThenBy(record => Guid.NewGuid()); - if (records.Any()) + Heijden.DNS.Response response = new Heijden.DNS.Resolver().Query("_minecraft._tcp." + domain, Heijden.DNS.QType.SRV); + Heijden.DNS.RecordSRV[] srvRecords = response.RecordsSRV; + if (srvRecords != null && srvRecords.Any()) { - var result = records.First(); - string target = result.HostName.Trim('.'); - ConsoleIO.WriteLineFormatted(String.Format("§8Found server {0}:{1} for domain {2}", target, result.Port, domain)); + //Order SRV records by priority and weight, then randomly + Heijden.DNS.RecordSRV result = srvRecords + .OrderBy(record => record.PRIORITY) + .ThenByDescending(record => record.WEIGHT) + .ThenBy(record => Guid.NewGuid()) + .First(); + string target = result.TARGET.Trim('.'); + ConsoleIO.WriteLineFormatted(String.Format("§8Found server {0}:{1} for domain {2}", target, result.PORT, domain)); domain = target; - port = result.Port; + port = result.PORT; return true; } }