Skip to content

Commit 3349935

Browse files
committed
Fixup Https results to use targetName
1 parent 3c68eba commit 3349935

2 files changed

Lines changed: 52 additions & 2 deletions

File tree

okhttp-dnsoverhttps/src/main/kotlin/okhttp3/dnsoverhttps/internal/-DnsOverHttpsCall.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ internal class DnsOverHttpsCall(
120120
when (resourceRecord) {
121121
is ResourceRecord.Https -> {
122122
Dns.Record.ServiceMetadata(
123-
hostname = request.hostname,
123+
hostname = resourceRecord.targetName.takeIf { it != "" } ?: request.hostname,
124124
alpnIds =
125125
resourceRecord.alpnIds?.mapNotNull { alpnId ->
126126
try {

okhttp-dnsoverhttps/src/test/java/okhttp3/dnsoverhttps/DnsOverHttpsTest.kt

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ class DnsOverHttpsTest(
347347
ResourceRecord.Https(
348348
name = "lysine.dev",
349349
timeToLive = 5,
350+
targetName = "cdn.lysine.dev",
350351
alpnIds = listOf(Protocol.HTTP_2.toString()),
351352
port = 8843,
352353
ipAddressHints =
@@ -367,7 +368,7 @@ class DnsOverHttpsTest(
367368
records =
368369
listOf(
369370
Dns.Record.ServiceMetadata(
370-
hostname = "lysine.dev",
371+
hostname = "cdn.lysine.dev",
371372
alpnIds = listOf(Protocol.HTTP_2),
372373
port = 8843,
373374
ipAddressHints =
@@ -406,6 +407,55 @@ class DnsOverHttpsTest(
406407
)
407408
}
408409

410+
@Test
411+
fun serviceMetadataEmptyTargetNameAliasesToRequestHostname() {
412+
assumeTrue(entryPoint == EntryPoint.NewCall)
413+
414+
dns = buildLocalhost(bootstrapClient, includeIPv6 = true, includeHttps = true)
415+
server["lysine.dev"] =
416+
listOf(
417+
ResourceRecord.IpAddress(
418+
name = "lysine.dev",
419+
timeToLive = 5,
420+
address = InetAddress.getByName("10.20.30.40"),
421+
),
422+
ResourceRecord.Https(
423+
name = "lysine.dev",
424+
timeToLive = 5,
425+
targetName = "",
426+
alpnIds = listOf(Protocol.HTTP_2.toString()),
427+
),
428+
)
429+
430+
val call = dns.newCall(Dns.Request("lysine.dev"))
431+
val dnsEvents = call.toEventsQueue()
432+
433+
assertThat(dnsEvents.take()).isEqualTo(
434+
DnsEvent.Records(
435+
last = false,
436+
records =
437+
listOf(
438+
Dns.Record.ServiceMetadata(
439+
hostname = "lysine.dev",
440+
alpnIds = listOf(Protocol.HTTP_2),
441+
),
442+
),
443+
),
444+
)
445+
assertThat(dnsEvents.take()).isEqualTo(
446+
DnsEvent.Records(
447+
last = true,
448+
records =
449+
listOf(
450+
Dns.Record.IpAddress(
451+
hostname = "lysine.dev",
452+
address = InetAddress.getByName("10.20.30.40"),
453+
),
454+
),
455+
),
456+
)
457+
}
458+
409459
/** An HTTPS error is received before the IPv4 results, but the error is delivered last. */
410460
@Test
411461
fun httpsFailureIsDeliveredAfterIpv6AndIpv4Records() {

0 commit comments

Comments
 (0)