Changes
=Proposal for concurrent join=
The protocol join joins one user at the a time but is greedy and non-blocking in respect to several concurrent joiner joiners and eventually results in join joins of all new users (as long as current users in the session cooperate with the join process). The global order of messages is essential in for the protocol to succeed , which is a transport assumption for <math>n+1sec</math> protocol.
==Session picking protocol for new user joining the room==
New user start starts a join process by sending <math>(U_{joiner}, y_{joiner})</math>. In respose, it receives messages of the format
<math> sid, (U_1,y_1,...,U_{joiner},y_{joiner},...), kc_{i}, z_{i}</math>
From each user <math>i</math>. The joiner makes a session for each <math>sid</math> which contain contains them as a participant, the user initiate initiates a session and gather gathers shares. When a session receives all shares , it compute computes the session key and becomes the current session. All other session sessions can remains remain in limbo or get discarded based on the memory capacity of the implementation and security requirement.
==Session picking protocol for current occupant of the current session==
Suppose user <math>U_i</math> is in Session <math>S</math>. When a new user <math>U_j</math> send sends a join request, the user <math>U_i</math> start starts a session in limbo <math>S_j</math> with the list of users in the current session plus the joining user. As a part of initiation of each session <math>S_j</math> the current user send sends a message of type:
<math> sid, (U_1,y_1,...,U_{joiner},y_{joiner},...), kc_{i}, z_{i}</math>
If <math>m</math> users are joining that session concurrently, there are <math>S_1,...,S_m</math> sessions in-limbo which are receiving shares and authentication messages.
If the <math>U_l</math> , currently in room signal the session, signals to leave the room , a new session <math>S_l</math> is created. Each Furthermore, each session <math>S_j</math> in-limbo which has <math>U_l</math> as participants, results in the creation of new session <math>S_{j'}</math> with user <math>U_l</math> omitted. and <math>S_j</math> is marked as dead.
in-limbo -> {in-limbo, dead, current}
current -> in-limbo