Beispiel #1
0
static void on_peer_auth_done (CcnetPeerManager *manager,
                               CcnetPeer *peer, gpointer user_data)
{
    CcnetSession *session = (CcnetSession *)user_data;
    
    CCNET_SESSION_GET_CLASS (session)->on_peer_auth_done(session, peer);
}
Beispiel #2
0
int
ccnet_session_prepare (CcnetSession *session, const char *config_dir_r, gboolean test_config)
{
    char *misc_path;
    int ret;

    if (ccnet_session_load_config (session, config_dir_r) < 0)
        return -1;

    misc_path = g_build_filename (session->config_dir, "misc", NULL);
    if (checkdir_with_mkdir (misc_path) < 0) {
        ccnet_error ("mkdir %s error", misc_path);
        return -1;
    }

    /* config db */
    session->config_db = ccnet_session_config_open_db (misc_path);
    if (!session->config_db) {
        ccnet_warning ("Failed to open config db.\n");
        return -1;
    }
    
    /* call subclass prepare */
    ret = CCNET_SESSION_GET_CLASS (session)->prepare(session);
    if (ret < 0)
        return ret;

    /* peer */
    ccnet_peer_manager_prepare(session->peer_mgr);
    g_signal_connect (session->peer_mgr, "peer-auth-done",
                      G_CALLBACK(on_peer_auth_done), session);

    /* permission manager */
    ccnet_perm_manager_prepare (session->perm_mgr);

    g_free (misc_path);

    if (test_config) {
        return 0;
    } else {
        /* Open localhost, if failed, then the program will exists. This is used
         * to prevent two instance of ccnet on the same port.
         */
        listen_on_localhost (session);
        
        /* refresh pubinfo on every startup */
        save_pubinfo (session);
    }

    return 0;
}