diff -r 9b64437262a2 -r 864f59271974 src/server.c --- a/src/server.c Sun Mar 29 13:26:00 2026 +0200 +++ b/src/server.c Sun Mar 29 15:17:28 2026 +0200 @@ -35,19 +35,38 @@ #include #include #include +#include +#include -static int server_open(Server *server, short port) { +static int server_fd = -1; +static void interrupt_listen(int sig) { + if (server_fd > -1) { + // this interrupts + close(server_fd); + } +} + +static int server_open(Server *server, Settings *settings) { printw("\nListening for client...\n"); refresh(); - if (net_create(server, port)) { + if (settings->usedomainsocket + ? net_create_sock(server, settings->serverhost) + : net_create_tcp(server, settings->port)) { addstr("Server creation failed"); return 1; } + // allow Ctrl+C to interrupt the listening process + server_fd = server->fd; + signal(SIGINT, interrupt_listen); + if (net_listen(server)) { - addstr("Listening for client failed"); + addstr("Listening for client failed or interrupted"); return 1; } + + // restore default action + signal(SIGINT, SIG_DFL); return 0; } @@ -97,7 +116,7 @@ } } - if (server_open(&server, settings->port)) { + if (server_open(&server, settings)) { net_destroy(&server); return 1; }