Lines Matching full:children
168 * The early_child/children array below is used for tracking children of the
204 static struct early_child *children; variable
235 /* Allocate and initialise the children array */
241 children = xcalloc(options.max_startups, sizeof(*children)); in child_alloc()
243 children[i].pipefd = -1; in child_alloc()
244 children[i].pid = -1; in child_alloc()
248 /* Register a new connection in the children array; child pid comes later */
260 if (children[i].pipefd != -1 || in child_register()
261 children[i].config != NULL || in child_register()
262 children[i].keys != NULL || in child_register()
263 children[i].pid > 0) in child_register()
265 child = &(children[i]); in child_register()
294 fatal_f("internal error: more children than max_startups"); in child_register()
342 if (children == NULL || pid <= 0) in child_exit()
345 if (children[i].pid == pid) { in child_exit()
346 children[i].have_status = 1; in child_exit()
347 children[i].status = status; in child_exit()
442 /* Reap all children that have exited; called after SIGCHLD */
450 if (children == NULL) in child_reap_all_exited()
467 if (!children[i].have_status) in child_reap_all_exited()
469 child_reap(&(children[i])); in child_reap_all_exited()
478 if (children == NULL) in close_startup_pipes()
481 if (children[i].pipefd != -1) in close_startup_pipes()
482 child_close(&(children[i]), 1, 1); in close_startup_pipes()
494 if (children == NULL) in show_info()
498 if (children[i].pipefd == -1 && children[i].pid <= 0) in show_info()
500 if (children[i].config) in show_info()
502 else if (children[i].keys) in show_info()
504 else if (children[i].early) in show_info()
508 logit("child %d: fd=%d pid=%ld %s%s", i, children[i].pipefd, in show_info()
509 (long)children[i].pid, children[i].id, child_status); in show_info()
1010 debug("Received SIGHUP; waiting for children"); in server_accept_loop()
1027 if (children[i].pipefd != -1) { in server_accept_loop()
1028 pfd[npfd].fd = children[i].pipefd; in server_accept_loop()
1030 if (children[i].config != NULL || in server_accept_loop()
1031 children[i].keys != NULL) in server_accept_loop()
1049 if (children[i].pipefd == -1 || in server_accept_loop()
1053 if (children[i].config) in server_accept_loop()
1054 buf = children[i].config; in server_accept_loop()
1055 else if (children[i].keys) in server_accept_loop()
1056 buf = children[i].keys; in server_accept_loop()
1063 ret = write(children[i].pipefd, ptr, len); in server_accept_loop()
1067 if (children[i].early) in server_accept_loop()
1069 srclimit_done(children[i].pipefd); in server_accept_loop()
1070 child_close(&(children[i]), 0, 0); in server_accept_loop()
1076 if (children[i].config == buf) { in server_accept_loop()
1078 children[i].config = NULL; in server_accept_loop()
1079 children[i].keys = pack_hostkeys(); in server_accept_loop()
1080 } else if (children[i].keys == buf) { in server_accept_loop()
1082 children[i].keys = NULL; in server_accept_loop()
1093 if (children[i].pipefd == -1 || in server_accept_loop()
1097 switch (read(children[i].pipefd, &c, sizeof(c))) { in server_accept_loop()
1103 "read %s", i, children[i].pipefd, in server_accept_loop()
1109 if (children[i].early) in server_accept_loop()
1111 srclimit_done(children[i].pipefd); in server_accept_loop()
1112 child_close(&(children[i]), 0, 0); in server_accept_loop()
1115 if (children[i].config) { in server_accept_loop()
1117 " early read", i, children[i].pipefd); in server_accept_loop()
1118 if (children[i].early) in server_accept_loop()
1120 if (children[i].pid > 0) in server_accept_loop()
1121 kill(children[i].pid, SIGTERM); in server_accept_loop()
1122 srclimit_done(children[i].pipefd); in server_accept_loop()
1123 child_close(&(children[i]), 0, 0); in server_accept_loop()
1126 if (children[i].early && c == '\0') { in server_accept_loop()
1129 children[i].early = 0; in server_accept_loop()
1131 "config", (long)children[i].pid, in server_accept_loop()
1132 children[i].id); in server_accept_loop()
1133 } else if (!children[i].early && c == '\001') { in server_accept_loop()
1136 (long)children[i].pid, in server_accept_loop()
1137 children[i].id); in server_accept_loop()
1138 child_close(&(children[i]), 1, 0); in server_accept_loop()
1142 (int)c, (long)children[i].pid, in server_accept_loop()
1143 children[i].id, children[i].early); in server_accept_loop()