Previously ListenAndServe ran entirely in a goroutine, so a port-in-use error was only logged and the launcher received nil from OnStart — leaving the application running without an HTTP server. Replace with net.Listen (synchronous) + srv.Serve(ln) (goroutine). A bind failure now returns an error from OnStart, which the launcher treats as fatal and triggers a clean shutdown immediately. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.5 KiB
3.5 KiB