@jsenv/server 15.4.1 → 15.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Abort } from "@jsenv/abort";
|
|
1
2
|
import { headersFromObject } from "../internal/headersFromObject.js";
|
|
2
3
|
import { observableFromNodeStream } from "./observable_from_node_stream.js";
|
|
3
4
|
|
|
@@ -5,6 +6,17 @@ export const fromNodeRequest = (
|
|
|
5
6
|
nodeRequest,
|
|
6
7
|
{ serverOrigin, signal, requestBodyLifetime },
|
|
7
8
|
) => {
|
|
9
|
+
const handleRequestOperation = Abort.startOperation();
|
|
10
|
+
if (signal) {
|
|
11
|
+
handleRequestOperation.addAbortSignal(signal);
|
|
12
|
+
}
|
|
13
|
+
handleRequestOperation.addAbortSource((abort) => {
|
|
14
|
+
nodeRequest.once("close", abort);
|
|
15
|
+
return () => {
|
|
16
|
+
nodeRequest.removeListener("close", abort);
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
|
|
8
20
|
const headers = headersFromObject(nodeRequest.headers);
|
|
9
21
|
const body = observableFromNodeStream(nodeRequest, {
|
|
10
22
|
readableStreamLifetime: requestBodyLifetime,
|
|
@@ -26,7 +38,7 @@ export const fromNodeRequest = (
|
|
|
26
38
|
}
|
|
27
39
|
|
|
28
40
|
return Object.freeze({
|
|
29
|
-
signal,
|
|
41
|
+
signal: handleRequestOperation.signal,
|
|
30
42
|
http2: Boolean(nodeRequest.stream),
|
|
31
43
|
origin: requestOrigin,
|
|
32
44
|
...getPropertiesFromResource({
|
package/src/start_server.js
CHANGED
|
@@ -298,6 +298,15 @@ export const startServer = async ({
|
|
|
298
298
|
status = "stopped";
|
|
299
299
|
stoppedResolve(reason);
|
|
300
300
|
});
|
|
301
|
+
let stopAbortSignal;
|
|
302
|
+
stop_signal: {
|
|
303
|
+
let stopAbortController = new AbortController();
|
|
304
|
+
stopCallbackSet.add(() => {
|
|
305
|
+
stopAbortController.abort();
|
|
306
|
+
stopAbortController = undefined;
|
|
307
|
+
});
|
|
308
|
+
stopAbortSignal = stopAbortController.signal;
|
|
309
|
+
}
|
|
301
310
|
|
|
302
311
|
const cancelProcessTeardownRace = raceProcessTeardownEvents(
|
|
303
312
|
processTeardownEvents,
|
|
@@ -365,6 +374,9 @@ export const startServer = async ({
|
|
|
365
374
|
}
|
|
366
375
|
|
|
367
376
|
const receiveRequestOperation = Abort.startOperation();
|
|
377
|
+
receiveRequestOperation.addAbortSignal(stopAbortSignal);
|
|
378
|
+
const sendResponseOperation = Abort.startOperation();
|
|
379
|
+
sendResponseOperation.addAbortSignal(stopAbortSignal);
|
|
368
380
|
receiveRequestOperation.addAbortSource((abort) => {
|
|
369
381
|
const closeEventCallback = () => {
|
|
370
382
|
if (nodeRequest.complete) {
|
|
@@ -379,19 +391,11 @@ export const startServer = async ({
|
|
|
379
391
|
nodeRequest.removeListener("close", closeEventCallback);
|
|
380
392
|
};
|
|
381
393
|
});
|
|
382
|
-
receiveRequestOperation.addAbortSource((abort) => {
|
|
383
|
-
return stopCallbackSet.add(abort);
|
|
384
|
-
});
|
|
385
|
-
|
|
386
|
-
const sendResponseOperation = Abort.startOperation();
|
|
387
394
|
sendResponseOperation.addAbortSignal(receiveRequestOperation.signal);
|
|
388
|
-
sendResponseOperation.addAbortSource((abort) => {
|
|
389
|
-
return stopCallbackSet.add(abort);
|
|
390
|
-
});
|
|
391
395
|
|
|
392
396
|
const request = fromNodeRequest(nodeRequest, {
|
|
397
|
+
signal: stopAbortSignal,
|
|
393
398
|
serverOrigin,
|
|
394
|
-
signal: receiveRequestOperation.signal,
|
|
395
399
|
});
|
|
396
400
|
|
|
397
401
|
// Handling request is asynchronous, we buffer logs for that request
|
|
@@ -965,13 +969,16 @@ export const startServer = async ({
|
|
|
965
969
|
socket,
|
|
966
970
|
head,
|
|
967
971
|
async (websocket) => {
|
|
972
|
+
const websocketAbortController = new AbortController();
|
|
968
973
|
websocketClients.add(websocket);
|
|
974
|
+
websocket.signal = websocketAbortController.signal;
|
|
969
975
|
websocket.once("close", () => {
|
|
970
976
|
websocketClients.delete(websocket);
|
|
977
|
+
websocketAbortController.abort();
|
|
971
978
|
});
|
|
972
979
|
const request = fromNodeRequest(nodeRequest, {
|
|
980
|
+
signal: stopAbortSignal,
|
|
973
981
|
serverOrigin: websocketOrigin,
|
|
974
|
-
signal: new AbortController().signal,
|
|
975
982
|
requestBodyLifetime,
|
|
976
983
|
});
|
|
977
984
|
serviceController.callAsyncHooksUntil(
|