Skip to content

Commit 38738af

Browse files
authored
Fix missing port from DnsResolver host override value (#2111)
1 parent 9427a74 commit 38738af

File tree

3 files changed

+48
-5
lines changed

3 files changed

+48
-5
lines changed

build/dependencies.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<BenchmarkDotNetPackageVersion>0.13.1</BenchmarkDotNetPackageVersion>
44
<GoogleApisAuthPackageVersion>1.46.0</GoogleApisAuthPackageVersion>
55
<GoogleProtobufPackageVersion>3.22.0</GoogleProtobufPackageVersion>
6-
<GrpcDotNetPackageVersion>2.49.0</GrpcDotNetPackageVersion> <!-- Used by example projects -->
6+
<GrpcDotNetPackageVersion>2.52.0</GrpcDotNetPackageVersion> <!-- Used by example projects -->
77
<GrpcPackageVersion>2.46.6</GrpcPackageVersion>
88
<GrpcToolsPackageVersion>2.53.0</GrpcToolsPackageVersion>
99
<MicrosoftAspNetCoreAppPackageVersion>7.0.0</MicrosoftAspNetCoreAppPackageVersion>

src/Grpc.Net.Client/Balancer/DnsResolver.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#region Copyright notice and license
1+
#region Copyright notice and license
22

33
// Copyright 2019 The gRPC Authors
44
//
@@ -103,10 +103,11 @@ protected override async Task ResolveAsync(CancellationToken cancellationToken)
103103

104104
DnsResolverLog.ReceivedDnsResults(_logger, addresses.Length, _dnsAddress, addresses);
105105

106+
var hostOverride = $"{_dnsAddress}:{_port}";
106107
var endpoints = addresses.Select(a =>
107108
{
108109
var address = new BalancerAddress(a.ToString(), _port);
109-
address.Attributes.Set(ConnectionManager.HostOverrideKey, _dnsAddress);
110+
address.Attributes.Set(ConnectionManager.HostOverrideKey, hostOverride);
110111
return address;
111112
}).ToArray();
112113
var resolverResult = ResolverResult.ForResult(endpoints);

test/FunctionalTests/Balancer/DnsResolverTests.cs

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#region Copyright notice and license
1+
#region Copyright notice and license
22

33
// Copyright 2019 The gRPC Authors
44
//
@@ -52,7 +52,43 @@ public async Task Refresh_HasStarted_HasResult()
5252

5353
// Assert
5454
var result = await tcs.Task.DefaultTimeout();
55+
56+
Logger.LogInformation($"Resolver result returned {result.Addresses!.Count} addresses.");
57+
58+
Assert.Greater(result.Addresses!.Count, 0);
59+
foreach (var address in result.Addresses)
60+
{
61+
Assert.True(address.Attributes.TryGetValue(ConnectionManager.HostOverrideKey, out var host));
62+
Assert.AreEqual("localhost:80", host);
63+
}
64+
}
65+
66+
[Test]
67+
public async Task Refresh_CustomPort_InHostOverride()
68+
{
69+
// Arranged
70+
var tcs = new TaskCompletionSource<ResolverResult>(TaskCreationOptions.RunContinuationsAsynchronously);
71+
72+
var dnsResolver = CreateDnsResolver(new Uri("dns:///localhost:5001"));
73+
dnsResolver.Start(r =>
74+
{
75+
tcs.SetResult(r);
76+
});
77+
78+
// Act
79+
dnsResolver.Refresh();
80+
81+
// Assert
82+
var result = await tcs.Task.DefaultTimeout();
83+
84+
Logger.LogInformation($"Resolver result returned {result.Addresses!.Count} addresses.");
85+
5586
Assert.Greater(result.Addresses!.Count, 0);
87+
foreach (var address in result.Addresses)
88+
{
89+
Assert.True(address.Attributes.TryGetValue(ConnectionManager.HostOverrideKey, out var host));
90+
Assert.AreEqual("localhost:5001", host);
91+
}
5692
}
5793

5894
[Test]
@@ -298,6 +334,9 @@ public async Task DNS_Port_Works()
298334

299335
Logger.LogInformation($"Address: {address}");
300336
Assert.AreEqual(specifiedPort, address.EndPoint.Port);
337+
338+
Assert.True(address.Attributes.TryGetValue(ConnectionManager.HostOverrideKey, out var host));
339+
Assert.AreEqual($"localhost:{specifiedPort}", host);
301340
}
302341
}
303342

@@ -331,6 +370,9 @@ public async Task DefaultPort_Localhost_AddressesHaveDefaultPort()
331370

332371
Logger.LogInformation($"Address: {address}");
333372
Assert.AreEqual(defaultPort, address.EndPoint.Port);
373+
374+
Assert.True(address.Attributes.TryGetValue(ConnectionManager.HostOverrideKey, out var host));
375+
Assert.AreEqual($"localhost:{defaultPort}", host);
334376
}
335377
}
336378

@@ -345,4 +387,4 @@ public TestSystemClock(DateTime utcNow)
345387
}
346388
}
347389

348-
#endif
390+
#endif

0 commit comments

Comments
 (0)