From ad68923132c75cae547fbfaf834067085a59cb14 Mon Sep 17 00:00:00 2001 From: dahall Date: Tue, 26 Jul 2022 17:15:54 -0600 Subject: [PATCH] Another addition to DNS_ADDR_ARRAY.ctor --- PInvoke/DnsApi/WinDns.cs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/PInvoke/DnsApi/WinDns.cs b/PInvoke/DnsApi/WinDns.cs index eba561c1..76bc2770 100644 --- a/PInvoke/DnsApi/WinDns.cs +++ b/PInvoke/DnsApi/WinDns.cs @@ -984,20 +984,19 @@ namespace Vanara.PInvoke /// Initializes a new instance of the struct with IPv4 addresses. /// The list of IPv4 addresses. - public DNS_ADDR_ARRAY(params SOCKADDR_IN[] addrs) : this() - { - MaxCount = AddrCount = (uint)(addrs?.Length ?? 0); - Family = ADDRESS_FAMILY.AF_INET; - AddrArray = Array.ConvertAll(addrs, a => new DNS_ADDR() { MaxSa = new SOCKADDR(a).GetBytes() }); - } + public DNS_ADDR_ARRAY(params SOCKADDR_IN[] addrs) : this(Array.ConvertAll(addrs, a => new SOCKADDR(a))) { } /// Initializes a new instance of the struct with IPv6 addresses. /// The list of IPv4 addresses. - public DNS_ADDR_ARRAY(params SOCKADDR_IN6[] addrs) : this() + public DNS_ADDR_ARRAY(params SOCKADDR_IN6[] addrs) : this(Array.ConvertAll(addrs, a => new SOCKADDR(a))) { } + + /// Initializes a new instance of the struct with instances. + /// The list of socket addresses. + public DNS_ADDR_ARRAY(params SOCKADDR[] addrs) : this() { MaxCount = AddrCount = (uint)(addrs?.Length ?? 0); - Family = ADDRESS_FAMILY.AF_INET6; - AddrArray = Array.ConvertAll(addrs, a => new DNS_ADDR() { MaxSa = new SOCKADDR(a).GetBytes() }); + Family = AddrCount == 0 ? ADDRESS_FAMILY.AF_INET6 : addrs[0].sa_family; + AddrArray = Array.ConvertAll(addrs, a => new DNS_ADDR() { MaxSa = a.GetBytes() }); } }