summaryrefslogtreecommitdiff
path: root/ext/node
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-06-14 06:38:50 +0530
committerGitHub <noreply@github.com>2024-06-14 06:38:50 +0530
commite19ee6eecc416a99801231ac53f2c512ba1f81dd (patch)
tree357c002418e444777c4f4189f216359cd4360bbb /ext/node
parent368eb9073bff776b8bb49480b98ca4628ebdc7cd (diff)
fix(ext/node): `server.close()` does graceful shutdown (#24184)
Diffstat (limited to 'ext/node')
-rw-r--r--ext/node/polyfills/http.ts28
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,