diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-06-14 06:38:50 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-14 06:38:50 +0530 |
commit | e19ee6eecc416a99801231ac53f2c512ba1f81dd (patch) | |
tree | 357c002418e444777c4f4189f216359cd4360bbb /ext/node | |
parent | 368eb9073bff776b8bb49480b98ca4628ebdc7cd (diff) |
fix(ext/node): `server.close()` does graceful shutdown (#24184)
Diffstat (limited to 'ext/node')
-rw-r--r-- | ext/node/polyfills/http.ts | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/ext/node/polyfills/http.ts b/ext/node/polyfills/http.ts index 32e69772d..c6c112a50 100644 --- a/ext/node/polyfills/http.ts +++ b/ext/node/polyfills/http.ts @@ -1775,8 +1775,12 @@ export class ServerImpl extends EventEmitter { } if (listening && this.#ac) { - this.#ac.abort(); - this.#ac = undefined; + if (this.#server) { + this.#server.shutdown(); + } else if (this.#ac) { + this.#ac.abort(); + this.#ac = undefined; + } } else { this.#serveDeferred!.resolve(); } @@ -1785,6 +1789,26 @@ export class ServerImpl extends EventEmitter { return this; } + closeAllConnections() { + if (this.#hasClosed) { + return; + } + if (this.#ac) { + this.#ac.abort(); + this.#ac = undefined; + } + } + + closeIdleConnections() { + if (this.#hasClosed) { + return; + } + + if (this.#server) { + this.#server.shutdown(); + } + } + address() { return { port: this.#addr.port, |