On Thu, Feb 13, 2014 at 11:03:23PM +0100, Djalal Harouni wrote: > At login there is a small race window where session_get_state() will > return SESSION_ACTIVE instead of SESSION_OPENING. This must be fixed > since during that time there are calls to session_save() to save > session states and we want to write the correct state. > > When we queue the start scope and service jobs, we wait for both of them > to finish before calling and continue processing in: > "session_jobs_reply() => session_send_create_reply()" > to create the session fifo and notify clients. > > However, in the match_job_removed() D-Bus signal, we may hit situations > where the scope job has successfully finished and we are still waiting > for the user service job to finish. During that time the > "session->scope_job" will be freed and set to NULL, this makes > session_get_state() return SESSION_ACTIVE before it is really active, it > should return SESSION_OPENING since we are still waiting for the service > job to finish in order to create the session fifo. > > To fix this, we also check if the session fifo fd was created, if so then > the session has entered the SESSION_ACTIVE state, if not then it is still > in the SESSION_OPENING state and it is waiting for the scope and service > jobs to finish. Looks correct. Applied.
Zbyszek _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
