From e4062513d9be76031c989b02cd480bea78c7f3cb Mon Sep 17 00:00:00 2001 From: VBen Date: Sun, 27 Mar 2022 13:28:47 +0200 Subject: [PATCH] fix multicast binding error on windows systems --- src/index.ts | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/index.ts b/src/index.ts index 180b750..44a1d7a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -279,17 +279,9 @@ export class MotionGateway extends EventEmitter { const recvSocket = (this.recvSocket = dgram.createSocket({ type: 'udp4', reuseAddr: true })) recvSocket.on('listening', () => { - try { - if (this.multicastInterface) { - recvSocket.setMulticastInterface(this.multicastInterface) - } - recvSocket.addMembership(MULTICAST_IP, this.multicastInterface) - recvSocket.setBroadcast(true) - recvSocket.setMulticastTTL(128) - } catch (err) { - this.emit('error', err) - this.stop() - } + + recvSocket.setMulticastTTL(128) + }) recvSocket.on('error', err => { @@ -319,7 +311,18 @@ export class MotionGateway extends EventEmitter { } }) - recvSocket.bind(UDP_PORT_RECEIVE, MULTICAST_IP) + recvSocket.bind(UDP_PORT_RECEIVE, () => { + try { + if (this.multicastInterface) { + recvSocket.setMulticastInterface(this.multicastInterface) + } + recvSocket.addMembership(MULTICAST_IP, this.multicastInterface) + recvSocket.setBroadcast(true) + } catch (err) { + this.emit('error', err) + this.stop() + } + }) } stop() {