From b2c1cfbf9c0c665db1c708b159a9be9b9d9aa5cd Mon Sep 17 00:00:00 2001 From: Adhiraj Singh Date: Wed, 1 Feb 2023 14:33:14 +0530 Subject: [PATCH] fix: timeout send call --- Example/example.ts | 2 +- src/Socket/socket.ts | 13 ++++++++++++- src/Utils/generics.ts | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Example/example.ts b/Example/example.ts index 9cb0ee3..6e8a5d0 100644 --- a/Example/example.ts +++ b/Example/example.ts @@ -41,7 +41,7 @@ const startSock = async() => { generateHighQualityLinkPreview: true, // ignore all broadcast messages -- to receive the same // comment the line below out - shouldIgnoreJid: jid => isJidBroadcast(jid), + // shouldIgnoreJid: jid => isJidBroadcast(jid), // implement to handle retries getMessage: async key => { if(store) { diff --git a/src/Socket/socket.ts b/src/Socket/socket.ts index 1dfe72f..32b6ee4 100644 --- a/src/Socket/socket.ts +++ b/src/Socket/socket.ts @@ -38,6 +38,7 @@ export const makeSocket = ({ agent }) ws.setMaxListeners(0) + const ev = makeEventBuffer(logger) /** ephemeral key pair used to encrypt/decrypt communication. Unique for each connection */ const ephemeralKeyPair = Curve.generateKeyPair() @@ -65,7 +66,17 @@ export const makeSocket = ({ } const bytes = noise.encodeFrame(data) - await sendPromise.call(ws, bytes) as Promise + await promiseTimeout( + connectTimeoutMs, + async(resolve, reject) => { + try { + await sendPromise.call(ws, bytes) + resolve() + } catch(error) { + reject(error) + } + } + ) } /** send a binary node */ diff --git a/src/Utils/generics.ts b/src/Utils/generics.ts index 58c2a2a..7e5ee28 100644 --- a/src/Utils/generics.ts +++ b/src/Utils/generics.ts @@ -138,13 +138,13 @@ export const delayCancellable = (ms: number) => { export async function promiseTimeout(ms: number | undefined, promise: (resolve: (v?: T)=>void, reject: (error) => void) => void) { if(!ms) { - return new Promise (promise) + return new Promise(promise) } const stack = new Error().stack // Create a promise that rejects in milliseconds const { delay, cancel } = delayCancellable (ms) - const p = new Promise ((resolve, reject) => { + const p = new Promise((resolve, reject) => { delay .then(() => reject( new Boom('Timed Out', {