Message processor ignores messages from blocked group

pull/1/head
Michael Kirk 7 years ago
parent c6de8c579c
commit 2c9d905a16

@ -31,6 +31,7 @@ extern NSString *const kNSNotificationName_BlockListDidChange;
- (void)removeBlockedGroupId:(NSData *)groupId;
- (BOOL)isRecipientIdBlocked:(NSString *)recipientId;
- (BOOL)isGroupIdBlocked:(NSData *)groupId;
- (BOOL)isThreadBlocked:(TSThread *)thread;
- (void)syncBlockList;

@ -80,7 +80,7 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - Blocking
- (BOOL)isEnvelopeBlocked:(SSKProtoEnvelope *)envelope
- (BOOL)isEnvelopeSenderBlocked:(SSKProtoEnvelope *)envelope
{
OWSAssert(envelope);
@ -121,7 +121,7 @@ NS_ASSUME_NONNULL_BEGIN
DDLogInfo(@"%@ decrypting envelope: %@", self.logTag, [self descriptionForEnvelope:envelope]);
OWSAssert(envelope.source.length > 0);
if ([self isEnvelopeBlocked:envelope]) {
if ([self isEnvelopeSenderBlocked:envelope]) {
DDLogInfo(@"%@ ignoring blocked envelope: %@", self.logTag, envelope.source);
failureBlock();
return;

@ -158,13 +158,30 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - Blocking
- (BOOL)isEnvelopeBlocked:(SSKProtoEnvelope *)envelope
- (BOOL)isEnvelopeSenderBlocked:(SSKProtoEnvelope *)envelope
{
OWSAssert(envelope);
return [_blockingManager isRecipientIdBlocked:envelope.source];
}
- (BOOL)isDataMessageBlocked:(SSKProtoDataMessage *)dataMessage envelope:(SSKProtoEnvelope *)envelope
{
OWSAssert(dataMessage);
OWSAssert(envelope);
if (dataMessage.group) {
return [self.blockingManager isGroupIdBlocked:dataMessage.group.id];
} else {
BOOL senderBlocked = [self isEnvelopeSenderBlocked:envelope];
// If the envelopeSender was blocked, we never should have gotten as far as decrypting the dataMessage.
OWSAssert(!senderBlocked);
return senderBlocked;
}
}
#pragma mark - message handling
- (void)processEnvelope:(SSKProtoEnvelope *)envelope
@ -184,7 +201,7 @@ NS_ASSUME_NONNULL_BEGIN
}
OWSAssert(envelope.source.length > 0);
OWSAssert(![self isEnvelopeBlocked:envelope]);
OWSAssert(![self isEnvelopeSenderBlocked:envelope]);
switch (envelope.type) {
case SSKProtoEnvelopeTypeCiphertext:
@ -343,6 +360,16 @@ NS_ASSUME_NONNULL_BEGIN
OWSAssert(dataMessage);
OWSAssert(transaction);
if ([self isDataMessageBlocked:dataMessage envelope:envelope]) {
NSString *logMessage = [NSString stringWithFormat:@"Ignoring blocked message from sender: %@", envelope.source];
if (dataMessage.group) {
logMessage =
[logMessage stringByAppendingString:[NSString stringWithFormat:@" in group: %@", dataMessage.group.id]];
}
DDLogError(@"%@", logMessage);
return;
}
if (dataMessage.hasTimestamp) {
if (dataMessage.timestamp <= 0) {
DDLogError(@"%@ Ignoring message with invalid data message timestamp: %@", self.logTag, envelope.source);

Loading…
Cancel
Save