From b4c504f61d4f7bbb01133d36b0cb97109ac13b5c Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Fri, 4 Nov 2016 12:19:13 -0400 Subject: [PATCH] EndSessionMessage notifies remote side of reset session Otherwise they'll send us messages we can't decrypt. Also: Log and fail when message doesn't send due to no thread being specified. // FREEBIE --- SignalServiceKit.podspec | 2 +- .../Interactions/OWSEndSessionMessage.h | 13 +++++++++ .../Interactions/OWSEndSessionMessage.m | 28 +++++++++++++++++++ src/Messages/OWSMessageSender.h | 1 + src/Messages/OWSMessageSender.m | 4 +++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/Messages/Interactions/OWSEndSessionMessage.h create mode 100644 src/Messages/Interactions/OWSEndSessionMessage.m diff --git a/SignalServiceKit.podspec b/SignalServiceKit.podspec index 015d895f1..0238ded82 100644 --- a/SignalServiceKit.podspec +++ b/SignalServiceKit.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = "SignalServiceKit" - s.version = "0.4.0" + s.version = "0.5.0" s.summary = "An Objective-C library for communicating with the Signal messaging service." s.description = <<-DESC diff --git a/src/Messages/Interactions/OWSEndSessionMessage.h b/src/Messages/Interactions/OWSEndSessionMessage.h new file mode 100644 index 000000000..48bd54158 --- /dev/null +++ b/src/Messages/Interactions/OWSEndSessionMessage.h @@ -0,0 +1,13 @@ +// Created by Michael Kirk on 11/3/16. +// Copyright © 2016 Open Whisper Systems. All rights reserved. + +#import "TSOutgoingMessage.h" + +NS_ASSUME_NONNULL_BEGIN + +NS_SWIFT_NAME(EndSessionMessage) +@interface OWSEndSessionMessage : TSOutgoingMessage + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/Messages/Interactions/OWSEndSessionMessage.m b/src/Messages/Interactions/OWSEndSessionMessage.m new file mode 100644 index 000000000..47fb467f8 --- /dev/null +++ b/src/Messages/Interactions/OWSEndSessionMessage.m @@ -0,0 +1,28 @@ +// Created by Michael Kirk on 11/3/16. +// Copyright © 2016 Open Whisper Systems. All rights reserved. + +#import "OWSEndSessionMessage.h" +#import "OWSSignalServiceProtos.pb.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation OWSEndSessionMessage + +- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ + // override superclass with no-op. + // + // There's no need to save this message, since it's not displayed to the user. +} + +- (OWSSignalServiceProtosDataMessageBuilder *)dataMessageBuilder +{ + OWSSignalServiceProtosDataMessageBuilder *builder = [super dataMessageBuilder]; + [builder setFlags:OWSSignalServiceProtosDataMessageFlagsEndSession]; + + return builder; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/Messages/OWSMessageSender.h b/src/Messages/OWSMessageSender.h index 0989644f8..76b0a4ba4 100644 --- a/src/Messages/OWSMessageSender.h +++ b/src/Messages/OWSMessageSender.h @@ -13,6 +13,7 @@ NS_ASSUME_NONNULL_BEGIN @class TSThread; @protocol ContactsManagerProtocol; +NS_SWIFT_NAME(MessageSender) @interface OWSMessageSender : NSObject { @protected diff --git a/src/Messages/OWSMessageSender.m b/src/Messages/OWSMessageSender.m index d30bc5b73..7d71ad496 100644 --- a/src/Messages/OWSMessageSender.m +++ b/src/Messages/OWSMessageSender.m @@ -300,6 +300,10 @@ NSString *const OWSMessageSenderInvalidDeviceException = @"InvalidDeviceExceptio attempts:OWSMessageSenderRetryAttempts success:successHandler failure:failureHandler]; + } else { + DDLogError(@"%@ Unexpected unhandlable message: %@", self.tag, message); + NSError *error = OWSErrorMakeFailedToSendOutgoingMessageError(); + failureHandler(error); } }); }