/* ------------------ */ static void afp_goaway(int sig) { AFPConfig *config; #ifndef NO_DDP asp_kill(sig); #endif /* ! NO_DDP */ switch( sig ) { case SIGTERM: case SIGQUIT: switch (sig) { case SIGTERM: LOG(log_note, logtype_afpd, "AFP Server shutting down on SIGTERM"); break; case SIGQUIT: LOG(log_note, logtype_afpd, "AFP Server shutting down on SIGQUIT, NOT disconnecting clients"); break; } if (server_children) server_child_kill(server_children, CHILD_DSIFORK, sig); for (config = configs; config; config = config->next) if (config->server_cleanup) config->server_cleanup(config); server_unlock(default_options.pidfile); exit(0); break; case SIGUSR1 : nologin++; auth_unload(); LOG(log_info, logtype_afpd, "disallowing logins"); if (server_children) server_child_kill(server_children, CHILD_DSIFORK, sig); break; case SIGHUP : /* w/ a configuration file, we can force a re-read if we want */ reloadconfig = 1; break; default : LOG(log_error, logtype_afpd, "afp_goaway: bad signal" ); } return; }
/* ------------------ */ static void afp_goaway(int sig) { switch( sig ) { case SIGTERM: case SIGQUIT: switch (sig) { case SIGTERM: LOG(log_note, logtype_afpd, "AFP Server shutting down on SIGTERM"); break; case SIGQUIT: if (obj.options.flags & OPTION_KEEPSESSIONS) { LOG(log_note, logtype_afpd, "AFP Server shutting down on SIGQUIT, NOT disconnecting clients"); } else { LOG(log_note, logtype_afpd, "AFP Server shutting down on SIGQUIT"); sig = SIGTERM; } break; } if (server_children) server_child_kill(server_children, CHILD_DSIFORK, sig); _exit(0); break; case SIGUSR1 : nologin++; auth_unload(); LOG(log_info, logtype_afpd, "disallowing logins"); if (server_children) server_child_kill(server_children, CHILD_DSIFORK, sig); break; case SIGHUP : /* w/ a configuration file, we can force a re-read if we want */ reloadconfig = 1; break; case SIGCHLD: /* w/ a configuration file, we can force a re-read if we want */ gotsigchld = 1; break; default : LOG(log_error, logtype_afpd, "afp_goaway: bad signal" ); } return; }