diff options
Diffstat (limited to 'packages/integrations/node/src/http-server.ts')
-rw-r--r-- | packages/integrations/node/src/http-server.ts | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/packages/integrations/node/src/http-server.ts b/packages/integrations/node/src/http-server.ts index 8eea3c170..fee30aaec 100644 --- a/packages/integrations/node/src/http-server.ts +++ b/packages/integrations/node/src/http-server.ts @@ -3,6 +3,7 @@ import http from 'http'; import https from 'https'; import send from 'send'; import { fileURLToPath } from 'url'; +import enableDestroy from 'server-destroy'; interface CreateServerOptions { client: URL; @@ -19,6 +20,7 @@ export function createServer( if (req.url) { let pathname = removeBase(req.url); pathname = pathname[0] === '/' ? pathname : '/' + pathname; + pathname = new URL(pathname, `http://${host}:${port}`).pathname; const stream = send(req, encodeURI(decodeURI(pathname)), { root: fileURLToPath(client), dotfiles: pathname.startsWith('/.well-known/') ? 'allow' : 'deny', @@ -63,6 +65,7 @@ export function createServer( httpServer = http.createServer(listener); } httpServer.listen(port, host); + enableDestroy(httpServer); // Resolves once the server is closed const closed = new Promise<void>((resolve, reject) => { @@ -79,7 +82,7 @@ export function createServer( server: httpServer, stop: async () => { await new Promise((resolve, reject) => { - httpServer.close((err) => (err ? reject(err) : resolve(undefined))); + httpServer.destroy((err) => (err ? reject(err) : resolve(undefined))); }); }, }; |