From 2fb3e50631268fae28e4845c0b9c2f12d61f3be0 Mon Sep 17 00:00:00 2001 From: Michael Mac-Vicar Date: Thu, 27 Feb 2025 01:04:00 -0300 Subject: [PATCH] Add lookup fixtures are passed to createSocket --- .../src/server/socksClientCertificatesInterceptor.ts | 6 +++++- .../playwright-core/src/server/utils/happyEyeballs.ts | 8 ++++---- packages/playwright-core/src/server/utils/socksProxy.ts | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/playwright-core/src/server/socksClientCertificatesInterceptor.ts b/packages/playwright-core/src/server/socksClientCertificatesInterceptor.ts index 0a0f920832..c30d5911d5 100644 --- a/packages/playwright-core/src/server/socksClientCertificatesInterceptor.ts +++ b/packages/playwright-core/src/server/socksClientCertificatesInterceptor.ts @@ -139,10 +139,14 @@ class SocksProxyConnection { } async connect() { + const fixtures = { + __testHookLookup: (this._options as any).__testHookLookup + }; + if (this.socksProxy.proxyAgentFromOptions) this.target = await this.socksProxy.proxyAgentFromOptions.callback(new EventEmitter() as any, { host: rewriteToLocalhostIfNeeded(this.host), port: this.port, secureEndpoint: false }); else - this.target = await createSocket(rewriteToLocalhostIfNeeded(this.host), this.port); + this.target = await createSocket({ host: rewriteToLocalhostIfNeeded(this.host), port: this.port, ...fixtures }); this.target.once('close', this._targetCloseEventListener); this.target.once('error', error => this.socksProxy._socksProxy.sendSocketError({ uid: this.uid, error: error.message })); diff --git a/packages/playwright-core/src/server/utils/happyEyeballs.ts b/packages/playwright-core/src/server/utils/happyEyeballs.ts index eb8531db4c..2815ad61de 100644 --- a/packages/playwright-core/src/server/utils/happyEyeballs.ts +++ b/packages/playwright-core/src/server/utils/happyEyeballs.ts @@ -55,14 +55,14 @@ class HttpsHappyEyeballsAgent extends https.Agent { export const httpsHappyEyeballsAgent = new HttpsHappyEyeballsAgent({ keepAlive: true }); export const httpHappyEyeballsAgent = new HttpHappyEyeballsAgent({ keepAlive: true }); -export async function createSocket(host: string, port: number): Promise { +export async function createSocket(options: { host: string, port: number }): Promise { return new Promise((resolve, reject) => { - if (net.isIP(host)) { - const socket = net.createConnection({ host, port }); + if (net.isIP(options.host)) { + const socket = net.createConnection(options); socket.on('connect', () => resolve(socket)); socket.on('error', error => reject(error)); } else { - createConnectionAsync({ host, port }, (err, socket) => { + createConnectionAsync(options, (err, socket) => { if (err) reject(err); if (socket) diff --git a/packages/playwright-core/src/server/utils/socksProxy.ts b/packages/playwright-core/src/server/utils/socksProxy.ts index 40c62c43c3..d6046b0d4f 100644 --- a/packages/playwright-core/src/server/utils/socksProxy.ts +++ b/packages/playwright-core/src/server/utils/socksProxy.ts @@ -411,7 +411,7 @@ export class SocksProxy extends EventEmitter implements SocksConnectionClient { private async _handleDirect(request: SocksSocketRequestedPayload) { try { - const socket = await createSocket(request.host, request.port); + const socket = await createSocket({ host: request.host, port: request.port }); socket.on('data', data => this._connections.get(request.uid)?.sendData(data)); socket.on('error', error => { this._connections.get(request.uid)?.error(error.message); @@ -540,7 +540,7 @@ export class SocksProxyHandler extends EventEmitter { try { if (this._redirectPortForTest) port = this._redirectPortForTest; - const socket = await createSocket(host, port); + const socket = await createSocket({ host, port }); socket.on('data', data => { const payload: SocksSocketDataPayload = { uid, data }; this.emit(SocksProxyHandler.Events.SocksData, payload);