diff --git a/server.c b/server.c index d6c7985..c29136e 100644 --- a/server.c +++ b/server.c @@ -75,27 +75,6 @@ static int server_set_socket_non_blocking(int sock) { return fcntl(sock, F_SETFL, flags | O_NONBLOCK); } -static Client *server_accept_client(void) { - int newfd = accept(server.socket, NULL, NULL); - if (newfd == -1 || server_set_socket_non_blocking(newfd) == -1) - goto error; - Client *c = client_malloc(newfd); - if (!c) - goto error; - if (!server.clients) - server_mark_socket_exec(true, true); - c->socket = newfd; - c->state = STATE_CONNECTED; - c->next = server.clients; - server.clients = c; - server.read_pty = true; - return c; -error: - if (newfd != -1) - close(newfd); - return NULL; -} - static bool server_read_pty(Packet *pkt) { pkt->type = MSG_CONTENT; ssize_t len = read(server.pty, pkt->u.msg, sizeof(pkt->u.msg)); @@ -157,6 +136,27 @@ static void server_sigterm_handler(int sig) { exit(EXIT_FAILURE); /* invoke atexit handler */ } +static Client *server_accept_client(void) { + int newfd = accept(server.socket, NULL, NULL); + if (newfd == -1 || server_set_socket_non_blocking(newfd) == -1) + goto error; + Client *c = client_malloc(newfd); + if (!c) + goto error; + if (!server.clients) + server_mark_socket_exec(true, true); + c->socket = newfd; + c->state = STATE_CONNECTED; + c->next = server.clients; + server.clients = c; + server.read_pty = true; + return c; +error: + if (newfd != -1) + close(newfd); + return NULL; +} + static void server_sigusr1_handler(int sig) { int socket = server_create_socket(server.session_name); if (socket != -1) {