mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-02 00:17:41 +01:00
Fix incorrect sender key state for mismatch/stale devices.
This commit is contained in:
@@ -2924,6 +2924,11 @@ public class SignalServiceMessageSender {
|
||||
Log.w(TAG, "[handleMismatchedDevices] Address: " + recipient.getIdentifier() + ", ExtraDevices: " + mismatchedDevices.getExtraDevices() + ", MissingDevices: " + mismatchedDevices.getMissingDevices());
|
||||
archiveSessions(recipient, mismatchedDevices.getExtraDevices());
|
||||
|
||||
ArrayList<Integer> mismatchedDeviceIds = new ArrayList<>();
|
||||
mismatchedDeviceIds.addAll(mismatchedDevices.getExtraDevices());
|
||||
mismatchedDeviceIds.addAll(mismatchedDevices.getMissingDevices());
|
||||
clearSenderKeySharedWith(recipient, mismatchedDeviceIds);
|
||||
|
||||
for (int missingDeviceId : mismatchedDevices.getMissingDevices()) {
|
||||
PreKeyBundle preKey = NetworkResultUtil.toPreKeysLegacy(keysApi.getPreKey(recipient, missingDeviceId));
|
||||
|
||||
@@ -2942,6 +2947,7 @@ public class SignalServiceMessageSender {
|
||||
private void handleStaleDevices(SignalServiceAddress recipient, StaleDevices staleDevices) {
|
||||
Log.w(TAG, "[handleStaleDevices] Address: " + recipient.getIdentifier() + ", StaleDevices: " + staleDevices.getStaleDevices());
|
||||
archiveSessions(recipient, staleDevices.getStaleDevices());
|
||||
clearSenderKeySharedWith(recipient, staleDevices.getStaleDevices());
|
||||
}
|
||||
|
||||
public void handleChangeNumberMismatchDevices(@Nonnull MismatchedDevices mismatchedDevices)
|
||||
@@ -2958,6 +2964,10 @@ public class SignalServiceMessageSender {
|
||||
}
|
||||
}
|
||||
|
||||
private void clearSenderKeySharedWith(SignalServiceAddress recipient, List<Integer> deviceIds) {
|
||||
aciStore.clearSenderKeySharedWith(convertToProtocolAddresses(recipient, deviceIds));
|
||||
}
|
||||
|
||||
private List<SignalProtocolAddress> convertToProtocolAddresses(SignalServiceAddress recipient, List<Integer> devices) {
|
||||
List<SignalProtocolAddress> addresses = new ArrayList<>(devices.size());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user