• Simon Morlat's avatar
    Modify ServerGroupChatRoom behavior about 1-1 chatroom, incrementing "groupchat" capability to 1.1 · 5016cc29
    Simon Morlat authored
    Previously, a 1-1 chatroom was deleted only if it were BYEd by every device. A device that BYEd previously was re-INVITED by the chatroom in case messages had to be delivered. In addition, a device that BYEd the chatroom was given back the same chatroom ID when trying to re-create a new chatroom to the same other participant.
    Doing all this required to store 1-1 chatroom in a specific table, so that they could be retrieved fastly.
    Unfortunately this design totally breaks a federated system, since each domain may be entitled to create a 1-1 chatroom to communicate with a participant from another domain. As a result, the unicity of the one to one chatroom is not achievable in a federation of SIP domains.
    Now, the ServerGroupChatRoom conforming to groupchat/1.1 treats 1-1 chatroom similarly as real group chat rooms, with only one exception: when a device leaves the chatroom, then the chatroom is terminated, ie the server sends BYE to every device.
    In contrat, the client are then expected to restart the INVITE procedure if they want to send message through a chatroom whose session has been terminated by a BYE. The chatroom ID will of course change.
    Thanks to "org.linphone.specs" (capability descriptor), backward compatibility is preserved: the ServerGroupChatRoom keeps the old behaviour if one of the device doesn't conform to 1.1 specification.
To find the state of this project's repository at the time of any of these versions, check out the tags.