-
-
Notifications
You must be signed in to change notification settings - Fork 6.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove unregistered group members #6175
Remove unregistered group members #6175
Conversation
If you remove a member from a group locally, all subsequent group updates from your client will be ignored, at least on Signal-Desktop clients. Can we change that behaviour and support kicking by excluding from group update? |
Locally remove unregistered users from group membership lists. Fixes signalapp#5891 Fixes signalapp#6003 Closes signalapp#6175
98cb576
to
bef9dcb
Compare
Locally remove unregistered users from group membership lists. Fixes signalapp#989 Related to signalapp/Signal-Android#6175 // FREEBIE
Locally remove unregistered users from group membership lists. Fixes signalapp#989 Related to signalapp/Signal-Android#6175 // FREEBIE
Locally remove unregistered users from group membership lists. Fixes signalapp#989 Related to signalapp/Signal-Android#6175 Closes signalapp#1052 // FREEBIE
Locally remove unregistered users from group membership lists. Fixes #989 Related to signalapp/Signal-Android#6175 Closes #1052 // FREEBIE
Since this got already merged in Signal-Desktop, I guess it is more important to work towards a consistent behavior now. Currently this is happening: Signal-Desktop removed two unregistered numbers locally, an actual user reinstalled Android, my phone answered to the group info request and hence the two unregistered numbers are back in Signal-Desktop :-P |
When all devices of a group except one notice a member is unregistered and remove him/her, the member re-registers and the last device is coming online, it will still still have the member in the group, but the others do not. If that previously dormant device is sending a message, the re-registered device(s) will send a group info request to all devices of the sender, receive potentially diverging group infos, and since the group info response is synced to siblings the group will be awfully async:
Leading to the re-registered user receiving messages from the dormant device's owner only. Now think of multiple dormant devices, multiple unregistered users and the amount of confusion this will bring upon non tech/signal-savvy users - imho this is way worse than the previous behaviour. |
I just spoke with @liliakai and we decided to revert the change on desktop. Locally removing users can cause lots of synchronization issues (as mentioned here), and we want the behavior to be that no error is shown but that the user is still considered a group member. I think that is what happens on Android now (correct me if I'm wrong), and if that wasn't the case on Desktop then we should resolve whatever bug was occurring there too. |
@moxie0 Android currently sends them until you run into rate limits for pre-keys of an unregistered user, which happens rather frequently: #6003 (comment), signalapp/libsignal-service-java#31 Also every message is not synced to sibling devices: #4859, signalapp/libsignal-service-java#27 |
My other attempt to work around these issues was signalapp/libsignal-service-java#31 (i.e. ignore the RateLimitExceptions and continue sending to the rest of the group). |
not completely sure about this, but I think messages actually still get marked as failed on RateLimitExceptions, without ability to resend? #5891 seems to confirm this |
@haffenloher yeah, every exception except a NetworkFailureException is just ignored: https://github.com/WhisperSystems/Signal-Android/blob/9148b7da5f4604dae1106d3932bfa7d3bfa63ad4/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java#L317 |
I see what you're saying now, the rate limit check is applied before the user existence check when fetching prekeys. I've done a server deploy which reverses that, so this should no longer be an issue and should not require any client-side changes. |
Okay, cool! That's indeed a simpler solution =) |
👍 Nevertheless, #4859 is still present - can't we send sync messages immediately? |
:-o I hoped this would lead to some kind of a solution for one of my repeatedly occuring problems: groupmember: 'Hi Wiz, i've got a new cellphone and a new number. Please add it to our group and remove the old mumber.' Often people also don't de-register. But i think there's a timeout in the server that de-registers numbers after 6 months without contact. |
@wizardofid I agree this is a problem, we're thinking about ways to reengineer the whole groups thing |
@moxie0 how would you like single point-of-truth-groups with one owner device and a logical clock? Non-admin clients could send a group update proposal to the owner, which accepts/declines/autoaccepts the proposal. This would prevent a group from updating when the owner device is offline or went south, but i think that is better than the status quo, where groups go async quite frequently (e.g. if your group contains an unregistered user, any group update you send will not arrive at your slaves due to #4859). |
Contributor checklist
Fixes #1234
syntaxFREEBIE
in the commit message of my first commitDescription
Locally remove unregistered users from group membership lists and add a message saying "so and so has left the group." as described in this comment.
Fixes #5891
Fixes #6003