commit a80d2bca13974bb0fe9dab49a777c3fe05abf543 from: Omar Polo date: Sun Jan 23 12:57:57 2022 UTC move control to the main process We may want to be able to run multiple listener process eventually, so the first step is to drop IMSG_CONTROLFD and keep the ctl stuff in the main process. commit - 3cb4e21c391ae397ec7d65fe4728cca2bea85320 commit + a80d2bca13974bb0fe9dab49a777c3fe05abf543 blob - 2b6985542b6d7383f5f452adbe52744d5ef88ad6 blob + d35a0bab0e6874fa81a7694b7b16c07a73b88fab --- kamid/control.c +++ kamid/control.c @@ -33,7 +33,6 @@ #include "control.h" #include "kamid.h" -#include "listener.h" #include "log.h" #include "utils.h" @@ -253,18 +252,17 @@ control_dispatch_imsg(int fd, short event, void *bula) switch (imsg.hdr.type) { case IMSG_CTL_RELOAD: - listener_imsg_compose_main(imsg.hdr.type, 0, NULL, 0); + if (main_reload() == -1) + log_warnx("configuration reload failed"); break; case IMSG_CTL_LOG_VERBOSE: if (IMSG_DATA_SIZE(imsg) != sizeof(verbose)) break; /* Forward to all other processes. */ - listener_imsg_compose_main(imsg.hdr.type, imsg.hdr.pid, - imsg.data, IMSG_DATA_SIZE(imsg)); + main_imsg_compose_listener(imsg.hdr.type, -1, + imsg.hdr.pid, imsg.data, IMSG_DATA_SIZE(imsg)); - /* XXX: send to every client? */ - memcpy(&verbose, imsg.data, sizeof(verbose)); log_setverbose(verbose); break; blob - 19d3ae0db232749db5b440e252cf48f93478ad2d blob + fdc841b82bf582614f509bce45241f70645984b6 --- kamid/kamid.c +++ kamid/kamid.c @@ -213,9 +213,8 @@ main(int argc, char **argv) if ((control_fd = control_init(csock)) == -1) fatalx("control socket setup failed"); + control_listen(control_fd); - main_imsg_compose_listener(IMSG_CONTROLFD, control_fd, 0, - NULL, 0); main_imsg_send_config(main_conf); sandbox_main(); blob - 6a9f167f1877451fcec866b2f6ef0c748aa1a47e blob + c4437257ae3d016844dbd2dcdcbcf2ebe6d6070d --- kamid/kamid.h +++ kamid/kamid.h @@ -112,6 +112,7 @@ struct kd_auth_proc { /* kamid.c */ extern int verbose; +int main_reload(void); int main_imsg_compose_listener(int, int, uint32_t, const void *, uint16_t); void merge_config(struct kd_conf *, struct kd_conf *); blob - b2105530e2b2cfd3c5f65fc4751dca13bc9be9fb blob + 87e88b00797f954fcc9d8522d96ea65c9537daa3 --- kamid/listener.c +++ kamid/listener.c @@ -311,14 +311,6 @@ listener_dispatch_main(int fd, short event, void *d) break; switch (imsg.hdr.type) { - case IMSG_CONTROLFD: - if ((fd = imsg.fd) == -1) - fatalx("%s: expected to receive imsg " - "control fd but didn't receive any", - __func__); - /* Listen on control socket. */ - control_listen(fd); - break; case IMSG_RECONF_CONF: case IMSG_RECONF_PKI: case IMSG_RECONF_PKI_CERT: