The mode switch from any to pin is currently done in create_session().
However, if no (pinning) session is created before (or after) linger
is disabled, the user will not be gc'd after that. Therefore, also
perform the mode switch when linger is being disabled.
return -errno;
u = hashmap_get(m->users, UID_TO_PTR(uid));
- if (u)
+ if (u) {
+ /* Make sure that disabling lingering will terminate the user tracking if no sessions pin it. */
+ u->gc_mode = USER_GC_BY_PIN;
user_add_to_gc_queue(u);
+ }
}
return sd_bus_reply_method_return(message, NULL);