static void recheck_sessions(void) { GHashTableIter iter; gpointer value, key; struct policy_group *group = NULL; GSList *list; g_hash_table_iter_init(&iter, session_hash); while (g_hash_table_iter_next(&iter, &key, &value)) { struct policy_config *policy = value; if (policy->group) continue; group = g_hash_table_lookup(selinux_hash, policy->selinux); if (group) { policy->config->id_type = CONNMAN_SESSION_ID_TYPE_LSM; g_free(policy->config->id); policy->config->id = g_strdup(policy->selinux_context); update_session(policy); continue; } group = g_hash_table_lookup(uid_hash, policy->uid); if (group) { set_policy(policy, group); policy->config->id_type = CONNMAN_SESSION_ID_TYPE_UID; g_free(policy->config->id); policy->config->id = g_strdup(policy->uid); update_session(policy); continue; } for (list = policy->gids; list; list = list->next) { char *gid = list->data; group = g_hash_table_lookup(gid_hash, gid); if (group) { set_policy(policy, group); policy->config->id_type = CONNMAN_SESSION_ID_TYPE_GID; g_free(policy->config->id); policy->config->id = g_strdup(gid); update_session(policy); } } } }
std::string MemcachedSessionManager::new_session(User &user) { std::string sessionid = generate_new_sessionid(user); Session session(user, sessionid); update_session(session); return sessionid; }
static void set_default_config(gpointer user_data) { struct policy_config *policy = user_data; connman_session_set_default_config(policy->config); policy->group = NULL; update_session(policy); }
static CURL *get_session(bool tmp_session) { CURL *session; static const char * funcname = "get_session"; if (needs_new_session(tmp_session)) { session = update_session(tmp_session); log_print(LOG_DEBUG, SECTION_SESSION_DEFAULT, "%s: update_session (%p)", funcname, session); } else { session = pthread_getspecific(session_tsd_key); log_print(LOG_DEBUG, SECTION_SESSION_DEFAULT, "%s: pthread session (%p)", funcname, session); } return session; }
void TraceManager::update_sessions() { SortedArray<ULONG> liveSessions(*getDefaultMemoryPool()); { // scope ConfigStorage* storage = getStorage(); StorageGuard guard(storage); storage->restart(); TraceSession session(*getDefaultMemoryPool()); while (storage->getNextSession(session)) { if ((session.ses_flags & trs_active) && !(session.ses_flags & trs_log_full)) { update_session(session); liveSessions.add(session.ses_id); } } changeNumber = storage->getChangeNumber(); } // remove sessions not present in storage FB_SIZE_T i = 0; while (i < trace_sessions.getCount()) { FB_SIZE_T pos; if (liveSessions.find(trace_sessions[i].ses_id, pos)) { i++; } else { trace_sessions[i].plugin->release(); trace_sessions.remove(i); } } // nothing to trace, clear needs if (trace_sessions.getCount() == 0) { trace_needs = 0; } }