Changes
= Algorithms =
== Nonblocking Blocking Join ==On entering a room, a user sends a QUERY. She is present in the room but hasn't yet joined the conversation. Someone (or multiple parties) will respond with a MEMBER_LIST. If two users try to join simultaneously, the second QUERY will not be responded to until the first user has finished joining.
On receiving a MEMBER_LIST, a present the new user learns the room's membership and sequence numbers. To finish joining, and can keep track of the membership by observing subsequent new user sends a JOIN / USER_LEFT messages, including a CONFIRM for each existing member. Each member will respond to her JOIN message with a CONFIRM, containing a new sender key.
== Blocking Nonblocking Join ==As aboveOn entering a room, except:* A a user is only added sends a QUERY. Someone will respond with a MEMBER_LIST. If multiple users try to group membership once all CONFIRMs from her JOIN, and any subsequent CONFIRMS (due to simultaneous join) have been simultaneously, they will all be responded to with CONFIRMsimmediately.* In On receiving a simultaneous JOIN caseMEMBER_LIST, the JOINs are handled based on new user learns the server ordering (earliest first)room's membership and sequence numbers. To finish joining, the new user sends a JOIN, including a CONFIRM for each existing member. Each member will respond to her JOIN message with a CONFIRM, containing their current sender key.
[[Category: mpOTR]]