diff --git a/packages/grpc-js/src/http_proxy.ts b/packages/grpc-js/src/http_proxy.ts index e24fba2e..2b3fb5d5 100644 --- a/packages/grpc-js/src/http_proxy.ts +++ b/packages/grpc-js/src/http_proxy.ts @@ -145,7 +145,7 @@ export function mapProxyName( extraOptions['grpc.http_connect_creds'] = proxyInfo.creds; } return { - target: `dns:///${proxyInfo.address}`, + target: `dns:${proxyInfo.address}`, extraOptions: extraOptions, }; } diff --git a/packages/grpc-js/src/resolver-dns.ts b/packages/grpc-js/src/resolver-dns.ts index 1f72f80b..24aa0236 100644 --- a/packages/grpc-js/src/resolver-dns.ts +++ b/packages/grpc-js/src/resolver-dns.ts @@ -171,7 +171,15 @@ class DnsResolver implements Resolver { }); return; } - if (this.dnsHostname !== null) { + if (this.dnsHostname === null) { + setImmediate(() => { + this.listener.onError({ + code: Status.UNAVAILABLE, + details: `Failed to parse DNS address ${this.target}`, + metadata: new Metadata(), + }); + }); + } else { /* We clear out latestLookupResult here to ensure that it contains the * latest result since the last time we started resolving. That way, the * TXT resolution handler can use it, but only if it finishes second. We