aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jail.c29
-rw-r--r--src/jail.h3
-rw-r--r--src/main.c7
3 files changed, 20 insertions, 19 deletions
diff --git a/src/jail.c b/src/jail.c
index 5b04a97..aa57581 100644
--- a/src/jail.c
+++ b/src/jail.c
@@ -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)
diff --git a/src/jail.h b/src/jail.h
index 2f64228..1a6ebd7 100644
--- a/src/jail.h
+++ b/src/jail.h
@@ -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
diff --git a/src/main.c b/src/main.c
index fed2c6f..ea26db3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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" );