Skip to content

Commit 2959fc8

Browse files
authored
Merge pull request #2981 from Lukasa/cb-fixup-hostname
Store the hostname in _names for Host.current()
2 parents bb57a22 + 35393ce commit 2959fc8

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

Sources/Foundation/Host.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ open class Host: NSObject {
118118
return addresses.firstIndex { aHost.addresses.contains($0) } != nil
119119
}
120120

121-
internal func _resolveCurrent() {
121+
internal func _resolveCurrent(withInfo info: String) {
122122
#if os(Windows)
123123
var szAddress: [WCHAR] =
124124
Array<WCHAR>(repeating: 0, count: Int(NI_MAXHOST))
@@ -165,6 +165,7 @@ open class Host: NSObject {
165165

166166
pAdapter = pAdapter!.pointee.Next
167167
}
168+
_names = [info]
168169
_resolved = true
169170
#else
170171
var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
@@ -189,6 +190,7 @@ open class Host: NSObject {
189190
}
190191
ifa = ifaValue.ifa_next
191192
}
193+
_names = [info]
192194
_resolved = true
193195
#endif
194196
}
@@ -197,7 +199,7 @@ open class Host: NSObject {
197199
guard _resolved == false else { return }
198200
#if os(Windows)
199201
if let info = _info {
200-
if _type == .current { return _resolveCurrent() }
202+
if _type == .current { return _resolveCurrent(withInfo: info) }
201203

202204
var hints: ADDRINFOW = ADDRINFOW()
203205
memset(&hints, 0, MemoryLayout<ADDRINFOW>.size)
@@ -266,7 +268,7 @@ open class Host: NSObject {
266268
case .address:
267269
flags = AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST
268270
case .current:
269-
_resolveCurrent()
271+
_resolveCurrent(withInfo: info)
270272
return
271273
}
272274
var hints = addrinfo()

Tests/Foundation/Tests/TestHost.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ class TestHost: XCTestCase {
1212
static var allTests: [(String, (TestHost) -> () throws -> Void)] {
1313
return [
1414
("test_addressesDoNotGrow", test_addressesDoNotGrow),
15-
("test_isEqual", test_isEqual)
15+
("test_isEqual", test_isEqual),
16+
("test_localNamesNonEmpty", test_localNamesNonEmpty),
1617
]
1718
}
1819

@@ -49,5 +50,14 @@ class TestHost: XCTestCase {
4950
let google = Host(name: "google.com")
5051
XCTAssertFalse(swift0.isEqual(to: google))
5152
}
53+
54+
// SR-14197
55+
func test_localNamesNonEmpty() {
56+
let local = Host.current()
57+
XCTAssertTrue(local.names.count > 0)
58+
59+
let swift = Host(name: "localhost")
60+
XCTAssertTrue(swift.names.count > 0)
61+
}
5262
}
5363

0 commit comments

Comments
 (0)