Skip to content

Commit ba66eb3

Browse files
committed
Drop Swift 5.10 support
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 1d4d97b commit ba66eb3

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
@@ -637,18 +637,16 @@ private func toStringArray(_ arrayPointer: UnsafeMutablePointer<UnsafeMutablePoi
637637
extension IPAddress.IPv4 {
638638
init(_ address: in_addr) {
639639
var address = address
640-
var addressBytes = [CChar](repeating: 0, count: Int(INET_ADDRSTRLEN))
641-
inet_ntop(AF_INET, &address, &addressBytes, socklen_t(INET_ADDRSTRLEN))
642-
self = .init(address: String(cString: addressBytes))
640+
let addressString = sys_inet_ntop(family: AF_INET, bytes: &address, length: Int(INET_ADDRSTRLEN)) ?? ""
641+
self = IPAddress.IPv4(address: addressString)
643642
}
644643
}
645644

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

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

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)