Skip to content

Commit db06727

Browse files
committed
fix(telegram): preserve HTTP proxy env in global dispatcher workaround
1 parent fb76e31 commit db06727

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

src/telegram/fetch.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { resetTelegramFetchStateForTests, resolveTelegramFetch } from "./fetch.j
55
const setDefaultAutoSelectFamily = vi.hoisted(() => vi.fn());
66
const setDefaultResultOrder = vi.hoisted(() => vi.fn());
77
const setGlobalDispatcher = vi.hoisted(() => vi.fn());
8-
const AgentCtor = vi.hoisted(() =>
9-
vi.fn(function MockAgent(this: { options: unknown }, options: unknown) {
8+
const EnvHttpProxyAgentCtor = vi.hoisted(() =>
9+
vi.fn(function MockEnvHttpProxyAgent(this: { options: unknown }, options: unknown) {
1010
this.options = options;
1111
}),
1212
);
@@ -28,7 +28,7 @@ vi.mock("node:dns", async () => {
2828
});
2929

3030
vi.mock("undici", () => ({
31-
Agent: AgentCtor,
31+
EnvHttpProxyAgent: EnvHttpProxyAgentCtor,
3232
setGlobalDispatcher,
3333
}));
3434

@@ -39,7 +39,7 @@ afterEach(() => {
3939
setDefaultAutoSelectFamily.mockReset();
4040
setDefaultResultOrder.mockReset();
4141
setGlobalDispatcher.mockReset();
42-
AgentCtor.mockClear();
42+
EnvHttpProxyAgentCtor.mockClear();
4343
vi.unstubAllEnvs();
4444
vi.clearAllMocks();
4545
if (originalFetch) {
@@ -147,12 +147,12 @@ describe("resolveTelegramFetch", () => {
147147
expect(setDefaultResultOrder).toHaveBeenCalledTimes(2);
148148
});
149149

150-
it("replaces global undici dispatcher with autoSelectFamily-enabled agent", async () => {
150+
it("replaces global undici dispatcher with proxy-aware EnvHttpProxyAgent", async () => {
151151
globalThis.fetch = vi.fn(async () => ({})) as unknown as typeof fetch;
152152
resolveTelegramFetch(undefined, { network: { autoSelectFamily: true } });
153153

154154
expect(setGlobalDispatcher).toHaveBeenCalledTimes(1);
155-
expect(AgentCtor).toHaveBeenCalledWith({
155+
expect(EnvHttpProxyAgentCtor).toHaveBeenCalledWith({
156156
connect: {
157157
autoSelectFamily: true,
158158
autoSelectFamilyAttemptTimeout: 300,
@@ -174,13 +174,13 @@ describe("resolveTelegramFetch", () => {
174174
resolveTelegramFetch(undefined, { network: { autoSelectFamily: false } });
175175

176176
expect(setGlobalDispatcher).toHaveBeenCalledTimes(2);
177-
expect(AgentCtor).toHaveBeenNthCalledWith(1, {
177+
expect(EnvHttpProxyAgentCtor).toHaveBeenNthCalledWith(1, {
178178
connect: {
179179
autoSelectFamily: true,
180180
autoSelectFamilyAttemptTimeout: 300,
181181
},
182182
});
183-
expect(AgentCtor).toHaveBeenNthCalledWith(2, {
183+
expect(EnvHttpProxyAgentCtor).toHaveBeenNthCalledWith(2, {
184184
connect: {
185185
autoSelectFamily: false,
186186
autoSelectFamilyAttemptTimeout: 300,

src/telegram/fetch.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as dns from "node:dns";
22
import * as net from "node:net";
3-
import { Agent, setGlobalDispatcher } from "undici";
3+
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
44
import type { TelegramNetworkConfig } from "../config/types.telegram.js";
55
import { resolveFetch } from "../infra/fetch.js";
66
import { createSubsystemLogger } from "../logging/subsystem.js";
@@ -46,7 +46,7 @@ function applyTelegramNetworkWorkarounds(network?: TelegramNetworkConfig): void
4646
) {
4747
try {
4848
setGlobalDispatcher(
49-
new Agent({
49+
new EnvHttpProxyAgent({
5050
connect: {
5151
autoSelectFamily: autoSelectDecision.value,
5252
autoSelectFamilyAttemptTimeout: 300,

0 commit comments

Comments
 (0)