diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jail.c | 29 | ||||
-rw-r--r-- | src/jail.h | 3 | ||||
-rw-r--r-- | src/main.c | 7 |
3 files changed, 20 insertions, 19 deletions
@@ -115,8 +115,9 @@ int jail_setup_epoll(jail_ctx *ctx[], size_t siz) return fd; } -int jail_daemonize_epoll(int epoll_fd, jail_ctx *ctx[], size_t siz) +pid_t jail_daemonize_epoll(int epoll_fd, jail_ctx *ctx[], size_t siz) { + pid_t p; int s; size_t i; @@ -130,21 +131,21 @@ int jail_daemonize_epoll(int epoll_fd, jail_ctx *ctx[], size_t siz) E_GAIERR(s, "Could not initialise jail daemon socket"); return 1; } + } - ctx[i]->jail_pid = fork(); - switch (ctx[i]->jail_pid) { - case -1: - W_STRERR("Jail daemonize"); - return 1; - case 0: - N("%s", "Jail daemon mainloop"); - jail_daemonfn_epoll(epoll_fd, ctx, siz); - break; - } - D2("Jail daemon pid: %d", ctx[i]->jail_pid); - } + p = fork(); + switch (p) { + case -1: + W_STRERR("Jail daemonize"); + return -1; + case 0: + N("%s", "Jail daemon mainloop"); + jail_daemonfn_epoll(epoll_fd, ctx, siz); + break; + } + D2("Jail daemon pid: %d", p); - return 0; + return p; } static int jail_daemonfn_epoll(int epoll_fd, jail_ctx *ctx[], size_t siz) @@ -10,7 +10,6 @@ #define MAX_STACKSIZE BUFSIZ typedef struct jail_ctx { - pid_t jail_pid; psocket sock; char host_buf[NI_MAXHOST], service_buf[NI_MAXSERV]; size_t stacksize; @@ -28,6 +27,6 @@ int jail_validate_ctx(const jail_ctx *ctx); int jail_setup_epoll(jail_ctx *ctx[], size_t siz); -int jail_daemonize_epoll(int epoll_fd, jail_ctx *ctx[], size_t siz); +pid_t jail_daemonize_epoll(int epoll_fd, jail_ctx *ctx[], size_t siz); #endif @@ -42,6 +42,7 @@ int main(int argc, char *argv[]) E_STRERR("Daemonize"); exit(EXIT_FAILURE); } + D2("Master pid: %d", daemon_pid); memset(jail, 0, sizeof(jail)); jail_ports[0] = "33333"; @@ -57,9 +58,9 @@ int main(int argc, char *argv[]) D2("%s", "Jail daemon epoll setup"); epoll_fd = jail_setup_epoll( jail, jail_siz ); - D2("epoll_fd: %d", epoll_fd); + D2("Jail epoll fd: %d", epoll_fd); ABORT_ON_FATAL( epoll_fd < 0, "Jail daemon epoll setup" ); - ABORT_ON_FATAL( jail_daemonize_epoll(epoll_fd, jail, jail_siz), + ABORT_ON_FATAL( jail_daemonize_epoll(epoll_fd, jail, jail_siz) < 0, "Jail daemon startup" ); { @@ -88,7 +89,7 @@ int main(int argc, char *argv[]) D2("%s", "Server epoll setup"); epoll_fd = server_setup_epoll( srv, srv_siz ); - D2("epoll_fd: %d", epoll_fd); + D2("Server epoll fd: %d", epoll_fd); ABORT_ON_FATAL( epoll_fd < 0, "Server epoll setup" ); ABORT_ON_FATAL( setgid(65534), "Change group" ); |