diff --git a/packages/grpc-js/src/http_proxy.ts b/packages/grpc-js/src/http_proxy.ts index d1df22d2..3e905c48 100644 --- a/packages/grpc-js/src/http_proxy.ts +++ b/packages/grpc-js/src/http_proxy.ts @@ -30,6 +30,7 @@ import { import { ChannelOptions } from './channel-options'; import { GrpcUri, parseUri, splitHostPort, uriToString } from './uri-parser'; import { URL } from 'url'; +import { DEFAULT_PORT } from './resolver-dns'; const TRACER_NAME = 'proxy'; @@ -189,16 +190,19 @@ export function getProxiedConnection( if (parsedTarget === null) { return Promise.resolve({}); } - const targetHostPost = splitHostPort(parsedTarget.path); - if (targetHostPost === null) { + const splitHostPost = splitHostPort(parsedTarget.path); + if (splitHostPost === null) { return Promise.resolve({}); } + const hostPort = `${splitHostPost.host}:${ + splitHostPost.port ?? DEFAULT_PORT + }`; const options: http.RequestOptions = { method: 'CONNECT', - path: targetHostPost.host + ':' + (targetHostPost.port != null ? targetHostPost.port : '443'), + path: hostPort, }; const headers: http.OutgoingHttpHeaders = { - Host: targetHostPost.host + ':' + (targetHostPost.port != null ? targetHostPost.port : '443'), + Host: hostPort, }; // Connect to the subchannel address as a proxy if (isTcpSubchannelAddress(address)) { diff --git a/packages/grpc-js/src/resolver-dns.ts b/packages/grpc-js/src/resolver-dns.ts index 9431183d..31e0d0ba 100644 --- a/packages/grpc-js/src/resolver-dns.ts +++ b/packages/grpc-js/src/resolver-dns.ts @@ -43,7 +43,7 @@ function trace(text: string): void { /** * The default TCP port to connect to if not explicitly specified in the target. */ -const DEFAULT_PORT = 443; +export const DEFAULT_PORT = 443; const DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS = 30_000;