aboutsummaryrefslogtreecommitdiff
path: root/src/http.ffi.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'src/http.ffi.mjs')
-rw-r--r--src/http.ffi.mjs15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/http.ffi.mjs b/src/http.ffi.mjs
index 06d5b31..3f59933 100644
--- a/src/http.ffi.mjs
+++ b/src/http.ffi.mjs
@@ -85,6 +85,17 @@ const server = Http.createServer((req, res) => {
}
});
-export const serve = (port) => {
- server.listen(port, "localhost");
+export const serve = (host, port, on_start, on_port_taken) => {
+ let tries = 1;
+ server.on("error", (error) => {
+ if (error.code === "EADDRINUSE") {
+ let is_first_try = tries === 1;
+ if (is_first_try) {
+ on_port_taken(port);
+ }
+ tries++;
+ port++;
+ server.listen(port, host);
+ }
+ }).listen(port, host, () => { on_start(port) });
};