From ad65440092ed2e5f85d1c7cadb6f59bef0c7be75 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Thu, 4 Jan 2024 08:51:39 +0530 Subject: fix(ext/node): UdpSocket ref and unref (#21777) --- ext/node/polyfills/internal_binding/udp_wrap.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'ext/node') diff --git a/ext/node/polyfills/internal_binding/udp_wrap.ts b/ext/node/polyfills/internal_binding/udp_wrap.ts index 619950997..209c84a23 100644 --- a/ext/node/polyfills/internal_binding/udp_wrap.ts +++ b/ext/node/polyfills/internal_binding/udp_wrap.ts @@ -78,6 +78,7 @@ export class UDP extends HandleWrap { #listener?: Deno.DatagramConn; #receiving = false; + #unrefed = false; #recvBufferSize = UDP_DGRAM_MAXSIZE; #sendBufferSize = UDP_DGRAM_MAXSIZE; @@ -273,7 +274,8 @@ export class UDP extends HandleWrap { } override ref() { - notImplemented("udp.UDP.prototype.ref"); + this.#listener?.ref(); + this.#unrefed = false; } send( @@ -315,7 +317,8 @@ export class UDP extends HandleWrap { } override unref() { - notImplemented("udp.UDP.prototype.unref"); + this.#listener?.unref(); + this.#unrefed = true; } #doBind(ip: string, port: number, _flags: number, family: number): number { @@ -443,6 +446,10 @@ export class UDP extends HandleWrap { let remoteAddr: Deno.NetAddr | null; let nread: number | null; + if (this.#unrefed) { + this.#listener!.unref(); + } + try { [buf, remoteAddr] = (await this.#listener!.receive(p)) as [ Uint8Array, -- cgit v1.2.3