From 5ce82405f7949e0575b6ae0fdfbf65683027ed2a Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Thu, 31 Mar 2022 06:29:21 -0700 Subject: [PATCH] Socket proxying error handling Summary: More careful error handling as discussed in D35088208. Reviewed By: aigoncharov Differential Revision: D35251661 fbshipit-source-id: 8baab2b454494846411f7084e29c5fa668bc2f31 --- desktop/flipper-server/src/startBaseServer.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/desktop/flipper-server/src/startBaseServer.tsx b/desktop/flipper-server/src/startBaseServer.tsx index ea90c9eea..67efb41ea 100644 --- a/desktop/flipper-server/src/startBaseServer.tsx +++ b/desktop/flipper-server/src/startBaseServer.tsx @@ -10,7 +10,7 @@ import os from 'os'; import net from 'net'; import express, {Express} from 'express'; -import http from 'http'; +import http, {ServerResponse} from 'http'; import path from 'path'; import fs from 'fs-extra'; import {VerifyClientCallbackSync, WebSocketServer} from 'ws'; @@ -128,7 +128,20 @@ async function startProxyServer( console.log('Starting socket server on ', socketPath); console.log(`Starting proxy server on http://localhost:${config.port}`); + proxyServer.on('error', (err, _req, res) => { + console.warn('Error in proxy server:', err); + if (res instanceof ServerResponse) { + res.writeHead(502, 'Failed to proxy request'); + } + res.end('Failed to proxy request: ' + err); + }); + + proxyServer.on('close', () => { + server.close(); + }); + server.on('close', () => { + proxyServer.close(); fs.remove(socketPath); });