diff --git a/src/main/apiServer/server.ts b/src/main/apiServer/server.ts index 0cba77aaa3..3cb81f4124 100644 --- a/src/main/apiServer/server.ts +++ b/src/main/apiServer/server.ts @@ -1,7 +1,8 @@ import { createServer } from 'node:http' +import { loggerService } from '@logger' + import { agentService } from '../services/agents' -import { loggerService } from '../services/LoggerService' import { app } from './app' import { config } from './config' @@ -15,11 +16,17 @@ export class ApiServer { private server: ReturnType | null = null async start(): Promise { - if (this.server) { + if (this.server && this.server.listening) { logger.warn('Server already running') return } + // Clean up any failed server instance + if (this.server && !this.server.listening) { + logger.warn('Cleaning up failed server instance') + this.server = null + } + // Load config const { port, host } = await config.load() @@ -39,7 +46,11 @@ export class ApiServer { resolve() }) - this.server!.on('error', reject) + this.server!.on('error', (error) => { + // Clean up the server instance if listen fails + this.server = null + reject(error) + }) }) }