Fix case where blocked user adds a new linked device.
This commit is contained in:
parent
1b93a210bc
commit
3159baebfa
|
@ -224,13 +224,23 @@
|
|||
return !!(this.id && this.id.match(/^rss:/));
|
||||
},
|
||||
isBlocked() {
|
||||
if (!this.id || this.isPublic() || this.isRss()) {
|
||||
if (this.isMe()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return this.isPrivate()
|
||||
? BlockedNumberController.isBlocked(this.id)
|
||||
: BlockedNumberController.isGroupBlocked(this.id);
|
||||
if (this.isClosedGroup()) {
|
||||
return BlockedNumberController.isGroupBlocked(this.id);
|
||||
}
|
||||
|
||||
if (this.isPrivate()) {
|
||||
const primary = this.getPrimaryDevicePubKey();
|
||||
return (
|
||||
BlockedNumberController.isBlocked(primary) ||
|
||||
BlockedNumberController.isBlocked(this.id)
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
isMediumGroup() {
|
||||
return this.get('is_medium_group');
|
||||
|
|
|
@ -96,8 +96,12 @@ function unpad(paddedData: ArrayBuffer): ArrayBuffer {
|
|||
throw new Error('Invalid padding');
|
||||
}
|
||||
|
||||
export function isBlocked(number: string) {
|
||||
return BlockedNumberController.isBlocked(number);
|
||||
export async function isBlocked(number: string) {
|
||||
const primary = await MultiDeviceProtocol.getPrimaryDevice(number);
|
||||
return (
|
||||
BlockedNumberController.isBlocked(primary) ||
|
||||
BlockedNumberController.isBlocked(number)
|
||||
);
|
||||
}
|
||||
|
||||
async function decryptPreKeyWhisperMessage(
|
||||
|
@ -151,7 +155,10 @@ async function decryptUnidentifiedSender(
|
|||
const { sender: source } = error || {};
|
||||
|
||||
if (source) {
|
||||
if (isBlocked(source.getName())) {
|
||||
// tslint:disable-next-line: no-shadowed-variable
|
||||
const blocked = await isBlocked(source.getName());
|
||||
if (blocked) {
|
||||
await BlockedNumberController.block(source.getName());
|
||||
window.log.info(
|
||||
'Dropping blocked message with error after sealed sender decryption'
|
||||
);
|
||||
|
@ -186,7 +193,9 @@ async function decryptUnidentifiedSender(
|
|||
envelope.type = SignalService.Envelope.Type.SESSION_REQUEST;
|
||||
}
|
||||
|
||||
if (isBlocked(sender.getName())) {
|
||||
const blocked = await isBlocked(sender.getName());
|
||||
if (blocked) {
|
||||
await BlockedNumberController.block(sender.getName());
|
||||
window.log.info('Dropping blocked message after sealed sender decryption');
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ import {
|
|||
import { getEnvelopeId } from './common';
|
||||
import { StringUtils } from '../session/utils';
|
||||
import { SignalService } from '../protobuf';
|
||||
import { BlockedNumberController } from '../util/blockedNumberController';
|
||||
|
||||
// TODO: check if some of these exports no longer needed
|
||||
export {
|
||||
|
@ -153,7 +154,9 @@ async function handleRequestDetail(
|
|||
|
||||
// TODO: 'source' is almost certainly undefined here (sealed sender),
|
||||
// so this check is not appropriate here
|
||||
if (isBlocked(envelope.source)) {
|
||||
const blocked = await isBlocked(envelope.source);
|
||||
if (blocked) {
|
||||
await BlockedNumberController.block(envelope.source);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue