Add lookup fixtures are passed to createSocket

This commit is contained in:
Michael Mac-Vicar 2025-02-27 01:04:00 -03:00
parent af1ccca8b1
commit 2fb3e50631
3 changed files with 11 additions and 7 deletions

View file

@ -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 }));

View file

@ -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<net.Socket> {
export async function createSocket(options: { host: string, port: number }): Promise<net.Socket> {
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)

View file

@ -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);