From 54a747560207c06196a1ba4eb8b8ca062f15ddc5 Mon Sep 17 00:00:00 2001 From: Edgar Arakelyan Date: Sun, 18 Oct 2026 09:37:23 -0700 Subject: [PATCH] refactor(mcp): release the listener through one helper Replaces a comma expression left by the previous commit with plain statements and moves the port release into a small function, so the listener body stays within the lint limits without changing behaviour. Co-Authored-By: Claude Fable 5.1 --- src/server/http/serveStreamableHttp.ts | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/server/http/serveStreamableHttp.ts b/src/server/http/serveStreamableHttp.ts index 8d8c578e6e..1723acb82c 100644 --- a/src/server/http/serveStreamableHttp.ts +++ b/src/server/http/serveStreamableHttp.ts @@ -297,12 +297,7 @@ export const serveStreamableHttp = async ( ); const closeListener = async (): Promise => { stopped = true; - httpServer.closeAllConnections(); - await new Promise((resolve, reject) => { - httpServer.close((error) => - error === undefined ? resolve() : reject(error), - ); - }); + await closeHttpServer(httpServer); }; try { httpServer.listen(port, host); @@ -313,7 +308,8 @@ export const serveStreamableHttp = async ( const bound = httpServer.address(); let url: string; try { - ((url = endpointUrl(bound)), (origin = new URL(url).origin)); + url = endpointUrl(bound); + origin = new URL(url).origin; } catch (cause: unknown) { await closeListener().catch(() => undefined); throw new StreamableHttpListenError(cause); @@ -356,6 +352,18 @@ export const serveStreamableHttp = async ( return { url, close }; }; +/** Drop open connections and release the port. */ +const closeHttpServer = ( + httpServer: ReturnType, +): Promise => { + httpServer.closeAllConnections(); + return new Promise((resolve, reject) => { + httpServer.close((error) => + error === undefined ? resolve() : reject(error), + ); + }); +}; + /** Translate one node:http exchange through `route`, logging a failure and answering it when headers are still open. */ const serveNodeRequest = async ( target: {