diff --git a/.changeset/smart-swans-add.md b/.changeset/smart-swans-add.md new file mode 100644 index 0000000..85d8eed --- /dev/null +++ b/.changeset/smart-swans-add.md @@ -0,0 +1,5 @@ +--- +'lan-network': patch +--- + +Add missing `socket.close` for DHCP discover on timeout diff --git a/src/dhcp.ts b/src/dhcp.ts index 1ef2b7e..233c768 100644 --- a/src/dhcp.ts +++ b/src/dhcp.ts @@ -53,6 +53,7 @@ export const dhcpDiscover = ( `Received no reply to DHCPDISCOVER in ${DHCP_TIMEOUT}ms` ) ); + cleanup(); }, DHCP_TIMEOUT); const socket = createSocket( { type: 'udp4', reuseAddr: true }, @@ -65,15 +66,19 @@ export const dhcpDiscover = ( clearTimeout(timeout); resolve(rinfo.address); - socket.close(); - socket.unref(); + cleanup(); } ); + function cleanup() { + try { + socket.close(); + socket.unref(); + } catch {} + } socket.on('error', error => { clearTimeout(timeout); reject(error); - socket.close(); - socket.unref(); + cleanup(); }); socket.bind(DHCP_CLIENT_PORT, () => { socket.setBroadcast(true);