Design Protocol for Sharing Forums
The protocol will look like a simpler version of the introduction protocol, with two parties per session, and messages for invite/accept/decline/abort. (if you share a forum with more than one contact we can just create one session per contact, there's no reason to tie them together.) 1: **INVITATION** - This is send by the sharer to one of her contacts. The content is a BDF list. * (int) The type of the message, here 1 * (raw) SessionId chosen by the sharer * (string) name of the forum * (raw) salt to uniquely identify this forum * (string) optional invitation message 2: **ACCEPT RESPONSE** - This should be sent by contacts that received a sharing invitation. The content is a BDF list with these elements: * (int) The type of the message, here 2 * (raw) SessionId must match the SessionId of an unanswered invitation. 3: **DECLINE RESPONSE** - This should be sent by contacts that received a sharing invitation and do not want to add the forum. The content is a BDF list with these elements: * (int) The type of the message, here 3 * (raw) SessionId must match the SessionId of an unanswered invitation. 4: **LEAVE** - This should be send by a contact that is unsubscribing from the forum. The content is a BDF list with two elements: * (int) The type of the message, here 4 * (raw) SessionId must match the SessionId of a previous (un)answered invitation. 5: **ABORT** - This should be send by a contact that encountered an error, so that it can not complete the protocol. The content is a BDF list with two elements: * (int) The type of the message, here 5 * (raw) SessionId must match the SessionId of an unanswered invitation. A successful run of the protocol would look like this: ![forum-sharing](/uploads/8f53758e8ed55146f498181b2708a9b1/forum-sharing.png) **Sharer** ![sharer-state-machine](/uploads/5ca0924c21eef0601e5cfdf4060577ad/sharer-state-machine.png) [sharer-state-machine.odg](/uploads/24354e5ef7779d36ed7a815eccb8f35e/sharer-state-machine.odg) **Invitee** ![invitee-state-machine](/uploads/b57dc42ebe5873530543ce7ab36af8f4/invitee-state-machine.png) [invitee-state-machine.odg](/uploads/2099baeb7948980819022fda5f402aed/invitee-state-machine.odg) Arrows that have no label stand for 'all other actions'. It should be documented in the wiki as well: https://code.briarproject.org/akwizgran/briar/wikis/ForumSharingClient This is a subtask of Issue #322.
issue