summaryrefslogtreecommitdiff
path: root/src/sessions.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sessions.c')
-rw-r--r--src/sessions.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/sessions.c b/src/sessions.c
index 66ec375..21fc1ae 100644
--- a/src/sessions.c
+++ b/src/sessions.c
@@ -74,6 +74,23 @@ void sessions_destroy(const char *id)
}
}
+int sessions_destroy_user(int64_t user_id, const char *keep_id)
+{
+ int n = 0;
+ struct session **pp = &g_sessions;
+ while (*pp) {
+ struct session *s = *pp;
+ if (s->user_id == user_id && (!keep_id || strcmp(s->id, keep_id))) {
+ *pp = s->next;
+ free(s);
+ n++;
+ continue;
+ }
+ pp = &s->next;
+ }
+ return n;
+}
+
void sessions_free_all(void)
{
struct session *s = g_sessions;