Skip to content

Commit 2836c57

Browse files
authored
Drop Swift 5.10 support (#75)
Motivation: Swift 5.10 is outside of the support window for the project. Modifications: - Bump tools version to 6.0 - Avoid using the now-deprecated `String(cString:)` initializer for collections of `Int8` and instead use the one for `UInt8`. - Add an inet_ntop helper Result: - 5.10 is dropped
1 parent 88dc49e commit 2836c57

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:5.10
1+
// swift-tools-version: 6.0
22

33
import PackageDescription
44

Sources/AsyncDNSResolver/c-ares/DNSResolver_c-ares.swift

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -638,18 +638,16 @@ private func toStringArray(_ arrayPointer: UnsafeMutablePointer<UnsafeMutablePoi
638638
extension IPAddress.IPv4 {
639639
init(_ address: in_addr) {
640640
var address = address
641-
var addressBytes = [CChar](repeating: 0, count: Int(INET_ADDRSTRLEN))
642-
inet_ntop(AF_INET, &address, &addressBytes, socklen_t(INET_ADDRSTRLEN))
643-
self = .init(address: String(cString: addressBytes))
641+
let addressString = sys_inet_ntop(family: AF_INET, bytes: &address, length: Int(INET_ADDRSTRLEN)) ?? ""
642+
self = IPAddress.IPv4(address: addressString)
644643
}
645644
}
646645

647646
extension IPAddress.IPv6 {
648647
init(_ address: ares_in6_addr) {
649648
var address = address
650-
var addressBytes = [CChar](repeating: 0, count: Int(INET6_ADDRSTRLEN))
651-
inet_ntop(AF_INET6, &address, &addressBytes, socklen_t(INET6_ADDRSTRLEN))
652-
self = .init(address: String(cString: addressBytes))
649+
let addressString = sys_inet_ntop(family: AF_INET6, bytes: &address, length: Int(INET6_ADDRSTRLEN)) ?? ""
650+
self = IPAddress.IPv6(address: addressString)
653651
}
654652
}
655653

@@ -666,3 +664,20 @@ extension AAAARecord {
666664
self.ttl = addrttl.ttl
667665
}
668666
}
667+
668+
func sys_inet_ntop(family: CInt, bytes: UnsafeRawPointer, length: Int) -> String? {
669+
var addressBytes: [Int8] = Array(repeating: 0, count: length)
670+
return addressBytes.withUnsafeMutableBufferPointer { addressBytesPtr -> String? in
671+
// The returned pointer is the same as addressBytesPtr.baseAddress but nil on error.
672+
if inet_ntop(family, bytes, addressBytesPtr.baseAddress, socklen_t(length)) == nil {
673+
return nil
674+
}
675+
676+
return addressBytesPtr.baseAddress!.withMemoryRebound(
677+
to: UInt8.self,
678+
capacity: addressBytesPtr.count
679+
) {
680+
String(cString: $0)
681+
}
682+
}
683+
}

Sources/AsyncDNSResolver/dnssd/DNSResolver_dnssd.swift

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,7 @@ extension DNSSD {
249249
throw AsyncDNSResolver.Error(code: .badResponse)
250250
}
251251

252-
var parsedAddressBytes = [CChar](repeating: 0, count: Int(INET_ADDRSTRLEN))
253-
inet_ntop(AF_INET, ptr, &parsedAddressBytes, socklen_t(INET_ADDRSTRLEN))
254-
let parsedAddress = String(cString: parsedAddressBytes)
252+
let parsedAddress = sys_inet_ntop(family: AF_INET, bytes: ptr, length: Int(INET_ADDRSTRLEN)) ?? ""
255253
return ARecord(address: .init(address: parsedAddress), ttl: nil)
256254
}
257255

@@ -272,9 +270,7 @@ extension DNSSD {
272270
throw AsyncDNSResolver.Error(code: .badResponse)
273271
}
274272

275-
var parsedAddressBytes = [CChar](repeating: 0, count: Int(INET6_ADDRSTRLEN))
276-
inet_ntop(AF_INET6, ptr, &parsedAddressBytes, socklen_t(INET6_ADDRSTRLEN))
277-
let parsedAddress = String(cString: parsedAddressBytes)
273+
let parsedAddress = sys_inet_ntop(family: AF_INET6, bytes: ptr, length: Int(INET6_ADDRSTRLEN)) ?? ""
278274
return AAAARecord(address: .init(address: parsedAddress), ttl: nil)
279275
}
280276

0 commit comments

Comments
 (0)