コード例 #1
0
ファイル: main.c プロジェクト: jrmithdobbs/netatalk-2-2-0-p6
/* ------------------ */
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;
}
コード例 #2
0
ファイル: main.c プロジェクト: NTmatter/Netatalk
/* ------------------ */
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;
}