rc = read(fd, buf, sizeof(buf));
if (rc > 0 && !strncmp(buf, "quit", 4))
- quit = 1;
+ quit = LXC_MAINLOOP_CLOSE;
}
if (events & EPOLLHUP)
struct ucred cred;
socklen_t credsz = sizeof(cred);
- ret = -1;
+ ret = LXC_MAINLOOP_ERROR;
clientfd = accept(fd, NULL, 0);
if (clientfd < 0) {
SYSERROR("Failed to accept connection for client file descriptor %d.", fd);
ret = read(fd, &msglxc, sizeof(msglxc));
if (ret != sizeof(msglxc)) {
SYSERROR("Reading from fifo failed: %s.", strerror(errno));
- return 1;
+ return LXC_MAINLOOP_CLOSE;
}
for (i = 0; i < mon->clientfds_cnt; i++) {
mon->clientfds[i], strerror(errno));
}
- return 0;
+ return LXC_MAINLOOP_CONTINUE;
}
static int lxc_monitord_mainloop_add(struct lxc_monitor *mon)
if (ret != req.datalen) {
WARN("Failed to receive full command request. Ignoring "
"request for \"%s\"", lxc_cmd_str(req.cmd));
- ret = -1;
+ ret = LXC_MAINLOOP_ERROR;
goto out_close;
}
ret = lxc_cmd_process(fd, &req, handler);
if (ret) {
/* This is not an error, but only a request to close fd. */
- ret = 0;
+ ret = LXC_MAINLOOP_CONTINUE;
goto out_close;
}
connection = accept(fd, NULL, 0);
if (connection < 0) {
SYSERROR("Failed to accept connection to run command.");
- return -1;
+ return LXC_MAINLOOP_ERROR;
}
ret = fcntl(connection, F_SETFD, FD_CLOEXEC);
ret = read(fd, &siginfo, sizeof(siginfo));
if (ret < 0) {
ERROR("Failed to read signal info from signal file descriptor %d", fd);
- return -1;
+ return LXC_MAINLOOP_ERROR;
}
if (ret != sizeof(siginfo)) {
if (siginfo.ssi_signo == SIGHUP) {
kill(hdlr->pid, SIGTERM);
INFO("Killing %d since terminal hung up", hdlr->pid);
- return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0;
+ return hdlr->init_died ? LXC_MAINLOOP_CLOSE : LXC_MAINLOOP_CONTINUE;
}
if (siginfo.ssi_signo != SIGCHLD) {
kill(hdlr->pid, siginfo.ssi_signo);
INFO("Forwarded signal %d to pid %d", siginfo.ssi_signo, hdlr->pid);
- return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0;
+ return hdlr->init_died ? LXC_MAINLOOP_CLOSE : LXC_MAINLOOP_CONTINUE;
}
/* More robustness, protect ourself from a SIGCHLD sent
if (siginfo.ssi_pid != hdlr->pid) {
NOTICE("Received %d from pid %d instead of container init %d",
siginfo.ssi_signo, siginfo.ssi_pid, hdlr->pid);
- return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0;
+ return hdlr->init_died ? LXC_MAINLOOP_CLOSE : LXC_MAINLOOP_CONTINUE;
}
if (siginfo.ssi_code == CLD_STOPPED) {
INFO("Container init process was stopped");
- return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0;
+ return hdlr->init_died ? LXC_MAINLOOP_CLOSE : LXC_MAINLOOP_CONTINUE;
} else if (siginfo.ssi_code == CLD_CONTINUED) {
INFO("Container init process was continued");
- return hdlr->init_died ? LXC_MAINLOOP_CLOSE : 0;
+ return hdlr->init_died ? LXC_MAINLOOP_CLOSE : LXC_MAINLOOP_CONTINUE;
}
DEBUG("Container init process %d exited", hdlr->pid);