From 8837e5902eb4606c350d4243b86347da39440068 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 6 Aug 2018 11:36:57 -0400 Subject: [PATCH 1/7] Migrate call proto wrappers. --- Signal/src/Signal-Bridging-Header.h | 1 - Signal/src/call/CallService.swift | 15 +++++-- .../src/Messages/OWSCallOfferMessage.h | 23 ---------- .../src/Messages/OWSCallOfferMessage.m | 43 ------------------- .../src/Messages/OWSOutgoingCallMessage.h | 14 +++--- .../src/Messages/OWSOutgoingCallMessage.m | 9 +--- 6 files changed, 21 insertions(+), 84 deletions(-) delete mode 100644 SignalServiceKit/src/Messages/OWSCallOfferMessage.h delete mode 100644 SignalServiceKit/src/Messages/OWSCallOfferMessage.m diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index e4323e894..a34c03dc7 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -87,7 +87,6 @@ #import #import #import -#import #import #import #import diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index cadbcc4d7..e5e2ca138 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -78,6 +78,7 @@ public enum CallError: Error { case externalError(underlyingError: Error) case timeout(description: String) case obsoleteCall(description: String) + case protoErro(description: String) } // Should be roughly synced with Android client for consistency @@ -407,9 +408,17 @@ private class SignalCallData: NSObject { } return peerConnectionClient.setLocalSessionDescription(sessionDescription).then { - let offerMessage = OWSCallOfferMessage(callId: call.signalingId, sessionDescription: sessionDescription.sdp) - let callMessage = OWSOutgoingCallMessage(thread: call.thread, offerMessage: offerMessage) - return self.messageSender.sendPromise(message: callMessage) + let offerBuilder = SSKProtoCallMessageOffer.SSKProtoCallMessageOfferBuilder() + offerBuilder.setId(call.signalingId) + offerBuilder.setSessionDescription(sessionDescription.sdp) + do { + let offer = try offerBuilder.build() + let callMessage = OWSOutgoingCallMessage(thread: call.thread, offerMessage: offer) + return self.messageSender.sendPromise(message: callMessage) + } catch { + owsFail("Couldn't build proto in \(#function)") + throw CallError.protoErro(description: "Couldn't build proto in \(#function)") + } } }.then { guard self.call == call else { diff --git a/SignalServiceKit/src/Messages/OWSCallOfferMessage.h b/SignalServiceKit/src/Messages/OWSCallOfferMessage.h deleted file mode 100644 index 3006991ef..000000000 --- a/SignalServiceKit/src/Messages/OWSCallOfferMessage.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -NS_ASSUME_NONNULL_BEGIN - -@class SSKProtoCallMessageOffer; - -/** - * Sent by the call initiator to Signal their intention to set up a call with the recipient. - */ -@interface OWSCallOfferMessage : NSObject - -- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription; - -@property (nonatomic, readonly) UInt64 callId; -@property (nonatomic, readonly, copy) NSString *sessionDescription; - -- (nullable SSKProtoCallMessageOffer *)asProtobuf; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSCallOfferMessage.m b/SignalServiceKit/src/Messages/OWSCallOfferMessage.m deleted file mode 100644 index 27e631289..000000000 --- a/SignalServiceKit/src/Messages/OWSCallOfferMessage.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSCallOfferMessage.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@implementation OWSCallOfferMessage - -- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription -{ - self = [super init]; - if (!self) { - return self; - } - - _callId = callId; - _sessionDescription = sessionDescription; - - return self; -} - -- (nullable SSKProtoCallMessageOffer *)asProtobuf -{ - SSKProtoCallMessageOfferBuilder *builder = [SSKProtoCallMessageOfferBuilder new]; - - builder.id = self.callId; - builder.sessionDescription = self.sessionDescription; - - NSError *error; - SSKProtoCallMessageOffer *_Nullable result = [builder buildAndReturnError:&error]; - if (error || !result) { - OWSFail(@"%@ could not build protobuf: %@", self.logTag, error); - return nil; - } - return result; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h index 314460b4e..c9580d4ad 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN @class OWSCallBusyMessage; @class OWSCallHangupMessage; @class OWSCallIceUpdateMessage; -@class OWSCallOfferMessage; +@class SSKProtoCallMessageOffer; @class TSThread; /** @@ -29,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN quotedMessage:(nullable TSQuotedMessage *)quotedMessage contactShare:(nullable OWSContact *)contactShare NS_UNAVAILABLE; -- (instancetype)initWithThread:(TSThread *)thread offerMessage:(OWSCallOfferMessage *)offerMessage; +- (instancetype)initWithThread:(TSThread *)thread offerMessage:(SSKProtoCallMessageOffer *)offerMessage; - (instancetype)initWithThread:(TSThread *)thread answerMessage:(OWSCallAnswerMessage *)answerMessage; - (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(OWSCallIceUpdateMessage *)iceUpdateMessage; - (instancetype)initWithThread:(TSThread *)thread @@ -37,11 +37,11 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithThread:(TSThread *)thread hangupMessage:(OWSCallHangupMessage *)hangupMessage; - (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage; -@property (nullable, nonatomic, readonly, strong) OWSCallOfferMessage *offerMessage; -@property (nullable, nonatomic, readonly, strong) OWSCallAnswerMessage *answerMessage; -@property (nullable, nonatomic, readonly, strong) NSArray *iceUpdateMessages; -@property (nullable, nonatomic, readonly, strong) OWSCallHangupMessage *hangupMessage; -@property (nullable, nonatomic, readonly, strong) OWSCallBusyMessage *busyMessage; +@property (nullable, nonatomic, readonly) SSKProtoCallMessageOffer *offerMessage; +@property (nullable, nonatomic, readonly) OWSCallAnswerMessage *answerMessage; +@property (nullable, nonatomic, readonly) NSArray *iceUpdateMessages; +@property (nullable, nonatomic, readonly) OWSCallHangupMessage *hangupMessage; +@property (nullable, nonatomic, readonly) OWSCallBusyMessage *busyMessage; @end diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m index dfba56952..83f5fe605 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m @@ -8,7 +8,6 @@ #import "OWSCallBusyMessage.h" #import "OWSCallHangupMessage.h" #import "OWSCallIceUpdateMessage.h" -#import "OWSCallOfferMessage.h" #import "ProtoUtils.h" #import "SignalRecipient.h" #import "TSContactThread.h" @@ -39,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (instancetype)initWithThread:(TSThread *)thread offerMessage:(OWSCallOfferMessage *)offerMessage +- (instancetype)initWithThread:(TSThread *)thread offerMessage:(SSKProtoCallMessageOffer *)offerMessage { self = [self initWithThread:thread]; if (!self) { @@ -147,11 +146,7 @@ NS_ASSUME_NONNULL_BEGIN SSKProtoCallMessageBuilder *builder = [SSKProtoCallMessageBuilder new]; if (self.offerMessage) { - SSKProtoCallMessageOffer *_Nullable proto = [self.offerMessage asProtobuf]; - if (!proto) { - return nil; - } - [builder setOffer:proto]; + [builder setOffer:self.offerMessage]; } if (self.answerMessage) { From 94675e880a9630dfef16181f082169e000a89133 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 6 Aug 2018 11:40:58 -0400 Subject: [PATCH 2/7] Migrate call proto wrappers. --- Signal/src/Signal-Bridging-Header.h | 1 - Signal/src/call/CallService.swift | 14 ++++-- .../src/Messages/OWSCallAnswerMessage.h | 23 ---------- .../src/Messages/OWSCallAnswerMessage.m | 43 ------------------- .../src/Messages/OWSOutgoingCallMessage.h | 6 +-- .../src/Messages/OWSOutgoingCallMessage.m | 9 +--- 6 files changed, 16 insertions(+), 80 deletions(-) delete mode 100644 SignalServiceKit/src/Messages/OWSCallAnswerMessage.h delete mode 100644 SignalServiceKit/src/Messages/OWSCallAnswerMessage.m diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index a34c03dc7..2f44a68a3 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -82,7 +82,6 @@ #import #import #import -#import #import #import #import diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index e5e2ca138..d5670ee89 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -712,10 +712,18 @@ private class SignalCallData: NSObject { throw CallError.obsoleteCall(description: "negotiateSessionDescription() response for obsolete call") } - let answerMessage = OWSCallAnswerMessage(callId: newCall.signalingId, sessionDescription: negotiatedSessionDescription.sdp) - let callAnswerMessage = OWSOutgoingCallMessage(thread: thread, answerMessage: answerMessage) + let answerBuilder = SSKProtoCallMessageAnswer.SSKProtoCallMessageAnswerBuilder() + answerBuilder.setId(newCall.signalingId) + answerBuilder.setSessionDescription(negotiatedSessionDescription.sdp) + do { + let answer = try answerBuilder.build() + let callAnswerMessage = OWSOutgoingCallMessage(thread: thread, answerMessage: answer) - return self.messageSender.sendPromise(message: callAnswerMessage) + return self.messageSender.sendPromise(message: callAnswerMessage) + } catch { + owsFail("Couldn't build proto in \(#function)") + throw CallError.protoErro(description: "Couldn't build proto in \(#function)") + } }.then { guard self.call == newCall else { throw CallError.obsoleteCall(description: "sendPromise(message: ) response for obsolete call") diff --git a/SignalServiceKit/src/Messages/OWSCallAnswerMessage.h b/SignalServiceKit/src/Messages/OWSCallAnswerMessage.h deleted file mode 100644 index 0d2d3dd9b..000000000 --- a/SignalServiceKit/src/Messages/OWSCallAnswerMessage.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -NS_ASSUME_NONNULL_BEGIN - -@class SSKProtoCallMessageAnswer; - -/** - * Sent by the call recipient upon accepting a CallOffer - */ -@interface OWSCallAnswerMessage : NSObject - -- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription; - -@property (nonatomic, readonly) UInt64 callId; -@property (nonatomic, readonly, copy) NSString *sessionDescription; - -- (nullable SSKProtoCallMessageAnswer *)asProtobuf; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSCallAnswerMessage.m b/SignalServiceKit/src/Messages/OWSCallAnswerMessage.m deleted file mode 100644 index c204240e7..000000000 --- a/SignalServiceKit/src/Messages/OWSCallAnswerMessage.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSCallAnswerMessage.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@implementation OWSCallAnswerMessage - -- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription -{ - self = [super init]; - if (!self) { - return self; - } - - _callId = callId; - _sessionDescription = sessionDescription; - - return self; -} - -- (nullable SSKProtoCallMessageAnswer *)asProtobuf -{ - SSKProtoCallMessageAnswerBuilder *builder = [SSKProtoCallMessageAnswerBuilder new]; - - builder.id = self.callId; - builder.sessionDescription = self.sessionDescription; - - NSError *error; - SSKProtoCallMessageAnswer *_Nullable result = [builder buildAndReturnError:&error]; - if (error || !result) { - OWSFail(@"%@ could not build protobuf: %@", self.logTag, error); - return nil; - } - return result; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h index c9580d4ad..6d911e52f 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h @@ -6,10 +6,10 @@ NS_ASSUME_NONNULL_BEGIN -@class OWSCallAnswerMessage; @class OWSCallBusyMessage; @class OWSCallHangupMessage; @class OWSCallIceUpdateMessage; +@class SSKProtoCallMessageAnswer; @class SSKProtoCallMessageOffer; @class TSThread; @@ -30,7 +30,7 @@ NS_ASSUME_NONNULL_BEGIN contactShare:(nullable OWSContact *)contactShare NS_UNAVAILABLE; - (instancetype)initWithThread:(TSThread *)thread offerMessage:(SSKProtoCallMessageOffer *)offerMessage; -- (instancetype)initWithThread:(TSThread *)thread answerMessage:(OWSCallAnswerMessage *)answerMessage; +- (instancetype)initWithThread:(TSThread *)thread answerMessage:(SSKProtoCallMessageAnswer *)answerMessage; - (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(OWSCallIceUpdateMessage *)iceUpdateMessage; - (instancetype)initWithThread:(TSThread *)thread iceUpdateMessages:(NSArray *)iceUpdateMessage; @@ -38,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage; @property (nullable, nonatomic, readonly) SSKProtoCallMessageOffer *offerMessage; -@property (nullable, nonatomic, readonly) OWSCallAnswerMessage *answerMessage; +@property (nullable, nonatomic, readonly) SSKProtoCallMessageAnswer *answerMessage; @property (nullable, nonatomic, readonly) NSArray *iceUpdateMessages; @property (nullable, nonatomic, readonly) OWSCallHangupMessage *hangupMessage; @property (nullable, nonatomic, readonly) OWSCallBusyMessage *busyMessage; diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m index 83f5fe605..b3ee69a71 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m @@ -4,7 +4,6 @@ #import "OWSOutgoingCallMessage.h" #import "NSDate+OWS.h" -#import "OWSCallAnswerMessage.h" #import "OWSCallBusyMessage.h" #import "OWSCallHangupMessage.h" #import "OWSCallIceUpdateMessage.h" @@ -50,7 +49,7 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (instancetype)initWithThread:(TSThread *)thread answerMessage:(OWSCallAnswerMessage *)answerMessage +- (instancetype)initWithThread:(TSThread *)thread answerMessage:(SSKProtoCallMessageAnswer *)answerMessage { self = [self initWithThread:thread]; if (!self) { @@ -150,11 +149,7 @@ NS_ASSUME_NONNULL_BEGIN } if (self.answerMessage) { - SSKProtoCallMessageAnswer *_Nullable proto = [self.answerMessage asProtobuf]; - if (!proto) { - return nil; - } - [builder setAnswer:proto]; + [builder setAnswer:self.answerMessage]; } if (self.iceUpdateMessages) { From 32d0f23b22a579c73f6fbf6c86a11f68da96efa0 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 6 Aug 2018 11:49:25 -0400 Subject: [PATCH 3/7] Migrate call proto wrappers. --- Signal/src/Signal-Bridging-Header.h | 1 - Signal/src/call/CallService.swift | 40 +++++++++++++--- .../src/Messages/OWSCallIceUpdateMessage.h | 30 ------------ .../src/Messages/OWSCallIceUpdateMessage.m | 47 ------------------- .../src/Messages/OWSOutgoingCallMessage.h | 8 ++-- .../src/Messages/OWSOutgoingCallMessage.m | 15 ++---- 6 files changed, 41 insertions(+), 100 deletions(-) delete mode 100644 SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.h delete mode 100644 SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.m diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index 2f44a68a3..f6bb3b18f 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -84,7 +84,6 @@ #import #import #import -#import #import #import #import diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index d5670ee89..335de2a36 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -78,7 +78,7 @@ public enum CallError: Error { case externalError(underlyingError: Error) case timeout(description: String) case obsoleteCall(description: String) - case protoErro(description: String) + case fatalError(description: String) } // Should be roughly synced with Android client for consistency @@ -417,7 +417,7 @@ private class SignalCallData: NSObject { return self.messageSender.sendPromise(message: callMessage) } catch { owsFail("Couldn't build proto in \(#function)") - throw CallError.protoErro(description: "Couldn't build proto in \(#function)") + throw CallError.fatalError(description: "Couldn't build proto in \(#function)") } } }.then { @@ -722,7 +722,7 @@ private class SignalCallData: NSObject { return self.messageSender.sendPromise(message: callAnswerMessage) } catch { owsFail("Couldn't build proto in \(#function)") - throw CallError.protoErro(description: "Couldn't build proto in \(#function)") + throw CallError.fatalError(description: "Couldn't build proto in \(#function)") } }.then { guard self.call == newCall else { @@ -841,12 +841,38 @@ private class SignalCallData: NSObject { return } - let iceUpdateMessage = OWSCallIceUpdateMessage(callId: call.signalingId, sdp: iceCandidate.sdp, sdpMLineIndex: iceCandidate.sdpMLineIndex, sdpMid: iceCandidate.sdpMid) + guard let sdpMid = iceCandidate.sdpMid else { + owsFail("Missing sdpMid in \(#function)") + throw CallError.fatalError(description: "Missing sdpMid in \(#function)") + } + + guard iceCandidate.sdpMLineIndex < UINT32_MAX else { + owsFail("Invalid sdpMLineIndex in \(#function)") + throw CallError.fatalError(description: "Invalid sdpMLineIndex in \(#function)") + } Logger.info("\(self.logTag) in \(#function) sending ICE Candidate \(call.identifiersForLogs).") - let callMessage = OWSOutgoingCallMessage(thread: call.thread, iceUpdateMessage: iceUpdateMessage) - let sendPromise = self.messageSender.sendPromise(message: callMessage) - sendPromise.retainUntilComplete() + + /** + * Sent by both parties out of band of the RTC calling channels, as part of setting up those channels. The messages + * include network accessibility information from the perspective of each client. Once compatible ICEUpdates have been + * exchanged, the clients can connect directly. + */ + let iceUpdateBuilder = SSKProtoCallMessageIceUpdate.SSKProtoCallMessageIceUpdateBuilder() + iceUpdateBuilder.setId(call.signalingId) + iceUpdateBuilder.setSdp(iceCandidate.sdp) + iceUpdateBuilder.setSdpMlineIndex(UInt32(iceCandidate.sdpMLineIndex)) + iceUpdateBuilder.setSdpMid(sdpMid) + do { + let iceUpdate = try iceUpdateBuilder.build() + + let callMessage = OWSOutgoingCallMessage(thread: call.thread, iceUpdateMessage: iceUpdate) + let sendPromise = self.messageSender.sendPromise(message: callMessage) + sendPromise.retainUntilComplete() + } catch { + owsFail("Couldn't build proto in \(#function)") + throw CallError.fatalError(description: "Couldn't build proto in \(#function)") + } }.catch { error in OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalAddedIceCandidate(), file: #file, function: #function, line: #line) Logger.error("\(self.logTag) in \(#function) waitUntilReadyToSendIceUpdates failed with error: \(error)") diff --git a/SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.h b/SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.h deleted file mode 100644 index a21dd55c6..000000000 --- a/SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -NS_ASSUME_NONNULL_BEGIN - -@class SSKProtoCallMessageIceUpdate; - -/** - * Sent by both parties out of band of the RTC calling channels, as part of setting up those channels. The messages - * include network accessability information from the perspective of each client. Once compatible ICEUpdates have been - * exchanged, the clients can connect directly. - */ -@interface OWSCallIceUpdateMessage : NSObject - -- (instancetype)initWithCallId:(UInt64)callId - sdp:(NSString *)sdp - sdpMLineIndex:(SInt32)sdpMLineIndex - sdpMid:(nullable NSString *)sdpMid; - -@property (nonatomic, readonly) UInt64 callId; -@property (nonatomic, readonly, copy) NSString *sdp; -@property (nonatomic, readonly) SInt32 sdpMLineIndex; -@property (nullable, nonatomic, readonly, copy) NSString *sdpMid; - -- (nullable SSKProtoCallMessageIceUpdate *)asProtobuf; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.m b/SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.m deleted file mode 100644 index 373dd9192..000000000 --- a/SignalServiceKit/src/Messages/OWSCallIceUpdateMessage.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSCallIceUpdateMessage.h" -#import - -@implementation OWSCallIceUpdateMessage - -- (instancetype)initWithCallId:(UInt64)callId - sdp:(NSString *)sdp - sdpMLineIndex:(SInt32)sdpMLineIndex - sdpMid:(nullable NSString *)sdpMid -{ - self = [super init]; - if (!self) { - return self; - } - - _callId = callId; - _sdp = sdp; - _sdpMLineIndex = sdpMLineIndex; - _sdpMid = sdpMid; - - return self; -} - -- (nullable SSKProtoCallMessageIceUpdate *)asProtobuf -{ - SSKProtoCallMessageIceUpdateBuilder *builder = - [SSKProtoCallMessageIceUpdateBuilder new]; - - [builder setId:self.callId]; - [builder setSdp:self.sdp]; - [builder setSdpMlineIndex:self.sdpMLineIndex]; - [builder setSdpMid:self.sdpMid]; - - NSError *error; - SSKProtoCallMessageIceUpdate *_Nullable result = [builder buildAndReturnError:&error]; - if (error || !result) { - OWSFail(@"%@ could not build protobuf: %@", self.logTag, error); - return nil; - } - return result; -} - -@end diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h index 6d911e52f..b0baca371 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h @@ -8,8 +8,8 @@ NS_ASSUME_NONNULL_BEGIN @class OWSCallBusyMessage; @class OWSCallHangupMessage; -@class OWSCallIceUpdateMessage; @class SSKProtoCallMessageAnswer; +@class SSKProtoCallMessageIceUpdate; @class SSKProtoCallMessageOffer; @class TSThread; @@ -31,15 +31,15 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithThread:(TSThread *)thread offerMessage:(SSKProtoCallMessageOffer *)offerMessage; - (instancetype)initWithThread:(TSThread *)thread answerMessage:(SSKProtoCallMessageAnswer *)answerMessage; -- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(OWSCallIceUpdateMessage *)iceUpdateMessage; +- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(SSKProtoCallMessageIceUpdate *)iceUpdateMessage; - (instancetype)initWithThread:(TSThread *)thread - iceUpdateMessages:(NSArray *)iceUpdateMessage; + iceUpdateMessages:(NSArray *)iceUpdateMessage; - (instancetype)initWithThread:(TSThread *)thread hangupMessage:(OWSCallHangupMessage *)hangupMessage; - (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage; @property (nullable, nonatomic, readonly) SSKProtoCallMessageOffer *offerMessage; @property (nullable, nonatomic, readonly) SSKProtoCallMessageAnswer *answerMessage; -@property (nullable, nonatomic, readonly) NSArray *iceUpdateMessages; +@property (nullable, nonatomic, readonly) NSArray *iceUpdateMessages; @property (nullable, nonatomic, readonly) OWSCallHangupMessage *hangupMessage; @property (nullable, nonatomic, readonly) OWSCallBusyMessage *busyMessage; diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m index b3ee69a71..57296f53b 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m @@ -6,7 +6,6 @@ #import "NSDate+OWS.h" #import "OWSCallBusyMessage.h" #import "OWSCallHangupMessage.h" -#import "OWSCallIceUpdateMessage.h" #import "ProtoUtils.h" #import "SignalRecipient.h" #import "TSContactThread.h" @@ -61,7 +60,7 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(OWSCallIceUpdateMessage *)iceUpdateMessage +- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(SSKProtoCallMessageIceUpdate *)iceUpdateMessage { self = [self initWithThread:thread]; if (!self) { @@ -74,7 +73,7 @@ NS_ASSUME_NONNULL_BEGIN } - (instancetype)initWithThread:(TSThread *)thread - iceUpdateMessages:(NSArray *)iceUpdateMessages + iceUpdateMessages:(NSArray *)iceUpdateMessages { self = [self initWithThread:thread]; if (!self) { @@ -152,14 +151,8 @@ NS_ASSUME_NONNULL_BEGIN [builder setAnswer:self.answerMessage]; } - if (self.iceUpdateMessages) { - for (OWSCallIceUpdateMessage *iceUpdateMessage in self.iceUpdateMessages) { - SSKProtoCallMessageIceUpdate *_Nullable proto = [iceUpdateMessage asProtobuf]; - if (!proto) { - return nil; - } - [builder addIceUpdate:proto]; - } + if (self.iceUpdateMessages.count > 0) { + [builder setIceUpdate:self.iceUpdateMessages]; } if (self.hangupMessage) { From 135a1655fd102315e0318257be2a8e4af1a2b686 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 6 Aug 2018 12:22:55 -0400 Subject: [PATCH 4/7] Migrate call proto wrappers. --- Signal/src/Signal-Bridging-Header.h | 1 - .../DebugUI/DebugUICalling.swift | 10 ++++- Signal/src/call/CallService.swift | 28 ++++++++----- .../src/Messages/OWSCallHangupMessage.h | 24 ----------- .../src/Messages/OWSCallHangupMessage.m | 42 ------------------- .../src/Messages/OWSOutgoingCallMessage.h | 6 +-- .../src/Messages/OWSOutgoingCallMessage.m | 9 +--- 7 files changed, 32 insertions(+), 88 deletions(-) delete mode 100644 SignalServiceKit/src/Messages/OWSCallHangupMessage.h delete mode 100644 SignalServiceKit/src/Messages/OWSCallHangupMessage.m diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index f6bb3b18f..4594d44da 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -83,7 +83,6 @@ #import #import #import -#import #import #import #import diff --git a/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift b/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift index 33d3bf218..2e003e632 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift +++ b/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift @@ -31,7 +31,15 @@ class DebugUICalling: DebugUIPage { guard let strongSelf = self else { return } let kFakeCallId = UInt64(12345) - let hangupMessage = OWSCallHangupMessage(callId: kFakeCallId) + var hangupMessage: SSKProtoCallMessageHangup + do { + let hangupBuilder = SSKProtoCallMessageHangup.SSKProtoCallMessageHangupBuilder() + hangupBuilder.setId(kFakeCallId) + hangupMessage = try hangupBuilder.build() + } catch { + Logger.error("\(strongSelf.logTag) could not build proto") + return + } let callMessage = OWSOutgoingCallMessage(thread: thread, hangupMessage: hangupMessage) strongSelf.messageSender.sendPromise(message: callMessage).then { diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index 335de2a36..a7ee66230 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -1201,17 +1201,25 @@ private class SignalCallData: NSObject { } // If the call hasn't started yet, we don't have a data channel to communicate the hang up. Use Signal Service Message. - let hangupMessage = OWSCallHangupMessage(callId: call.signalingId) - let callMessage = OWSOutgoingCallMessage(thread: call.thread, hangupMessage: hangupMessage) - let sendPromise = self.messageSender.sendPromise(message: callMessage).then { - Logger.debug("\(self.logTag) successfully sent hangup call message to \(call.thread.contactIdentifier())") - }.catch { error in - OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalHungupCall(), file: #file, function: #function, line: #line) - Logger.error("\(self.logTag) failed to send hangup call message to \(call.thread.contactIdentifier()) with error: \(error)") - } - sendPromise.retainUntilComplete() - terminateCall() + do { + let hangupBuilder = SSKProtoCallMessageHangup.SSKProtoCallMessageHangupBuilder() + hangupBuilder.setId(call.signalingId) + let hangupProto = try hangupBuilder.build() + + let callMessage = OWSOutgoingCallMessage(thread: call.thread, hangupMessage: hangupProto) + let sendPromise = self.messageSender.sendPromise(message: callMessage).then { + Logger.debug("\(self.logTag) successfully sent hangup call message to \(call.thread.contactIdentifier())") + }.catch { error in + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalHungupCall(), file: #file, function: #function, line: #line) + Logger.error("\(self.logTag) failed to send hangup call message to \(call.thread.contactIdentifier()) with error: \(error)") + } + sendPromise.retainUntilComplete() + + terminateCall() + } catch { + handleFailedCall(failedCall: call, error: CallError.assertionError(description: "\(self.logTag) couldn't build proto in \(#function)")) + } } /** diff --git a/SignalServiceKit/src/Messages/OWSCallHangupMessage.h b/SignalServiceKit/src/Messages/OWSCallHangupMessage.h deleted file mode 100644 index 994fb2ef5..000000000 --- a/SignalServiceKit/src/Messages/OWSCallHangupMessage.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSOutgoingCallMessage.h" - -NS_ASSUME_NONNULL_BEGIN - -@class SSKProtoCallMessageHangup; - -/** - * Sent by either party in a call to indicate the user intentionally ended the call. - */ -@interface OWSCallHangupMessage : OWSOutgoingCallMessage - -- (instancetype)initWithCallId:(UInt64)callId; - -@property (nonatomic, readonly) UInt64 callId; - -- (nullable SSKProtoCallMessageHangup *)asProtobuf; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSCallHangupMessage.m b/SignalServiceKit/src/Messages/OWSCallHangupMessage.m deleted file mode 100644 index f2955499f..000000000 --- a/SignalServiceKit/src/Messages/OWSCallHangupMessage.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSCallHangupMessage.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@implementation OWSCallHangupMessage - -- (instancetype)initWithCallId:(UInt64)callId -{ - self = [super init]; - if (!self) { - return self; - } - - _callId = callId; - - return self; -} - -- (nullable SSKProtoCallMessageHangup *)asProtobuf -{ - SSKProtoCallMessageHangupBuilder *builder = [SSKProtoCallMessageHangupBuilder new]; - - builder.id = self.callId; - - NSError *error; - SSKProtoCallMessageHangup *_Nullable result = [builder buildAndReturnError:&error]; - if (error || !result) { - OWSFail(@"%@ could not build protobuf: %@", self.logTag, error); - return nil; - } - return result; -} - - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h index b0baca371..ff98a87e9 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h @@ -7,8 +7,8 @@ NS_ASSUME_NONNULL_BEGIN @class OWSCallBusyMessage; -@class OWSCallHangupMessage; @class SSKProtoCallMessageAnswer; +@class SSKProtoCallMessageHangup; @class SSKProtoCallMessageIceUpdate; @class SSKProtoCallMessageOffer; @class TSThread; @@ -34,13 +34,13 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(SSKProtoCallMessageIceUpdate *)iceUpdateMessage; - (instancetype)initWithThread:(TSThread *)thread iceUpdateMessages:(NSArray *)iceUpdateMessage; -- (instancetype)initWithThread:(TSThread *)thread hangupMessage:(OWSCallHangupMessage *)hangupMessage; +- (instancetype)initWithThread:(TSThread *)thread hangupMessage:(SSKProtoCallMessageHangup *)hangupMessage; - (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage; @property (nullable, nonatomic, readonly) SSKProtoCallMessageOffer *offerMessage; @property (nullable, nonatomic, readonly) SSKProtoCallMessageAnswer *answerMessage; @property (nullable, nonatomic, readonly) NSArray *iceUpdateMessages; -@property (nullable, nonatomic, readonly) OWSCallHangupMessage *hangupMessage; +@property (nullable, nonatomic, readonly) SSKProtoCallMessageHangup *hangupMessage; @property (nullable, nonatomic, readonly) OWSCallBusyMessage *busyMessage; @end diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m index 57296f53b..dc6165c0e 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m @@ -5,7 +5,6 @@ #import "OWSOutgoingCallMessage.h" #import "NSDate+OWS.h" #import "OWSCallBusyMessage.h" -#import "OWSCallHangupMessage.h" #import "ProtoUtils.h" #import "SignalRecipient.h" #import "TSContactThread.h" @@ -85,7 +84,7 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (instancetype)initWithThread:(TSThread *)thread hangupMessage:(OWSCallHangupMessage *)hangupMessage +- (instancetype)initWithThread:(TSThread *)thread hangupMessage:(SSKProtoCallMessageHangup *)hangupMessage { self = [self initWithThread:thread]; if (!self) { @@ -156,11 +155,7 @@ NS_ASSUME_NONNULL_BEGIN } if (self.hangupMessage) { - SSKProtoCallMessageHangup *_Nullable proto = [self.hangupMessage asProtobuf]; - if (!proto) { - return nil; - } - [builder setHangup:proto]; + [builder setHangup:self.hangupMessage]; } if (self.busyMessage) { From dc012d46e4789fa7e4b2ac27c29f776350827c66 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 6 Aug 2018 12:30:35 -0400 Subject: [PATCH 5/7] Migrate call proto wrappers. --- Signal/src/Signal-Bridging-Header.h | 1 - .../DebugUI/DebugUICalling.swift | 13 +++++- Signal/src/call/CallService.swift | 17 +++++--- .../src/Messages/OWSCallBusyMessage.h | 24 ----------- .../src/Messages/OWSCallBusyMessage.m | 41 ------------------- .../src/Messages/OWSOutgoingCallMessage.h | 6 +-- .../src/Messages/OWSOutgoingCallMessage.m | 9 +--- 7 files changed, 28 insertions(+), 83 deletions(-) delete mode 100644 SignalServiceKit/src/Messages/OWSCallBusyMessage.h delete mode 100644 SignalServiceKit/src/Messages/OWSCallBusyMessage.m diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index 4594d44da..d496561eb 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -82,7 +82,6 @@ #import #import #import -#import #import #import #import diff --git a/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift b/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift index 2e003e632..c6cc1bac9 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift +++ b/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift @@ -37,7 +37,7 @@ class DebugUICalling: DebugUIPage { hangupBuilder.setId(kFakeCallId) hangupMessage = try hangupBuilder.build() } catch { - Logger.error("\(strongSelf.logTag) could not build proto") + owsFail("\(strongSelf.logTag) could not build proto") return } let callMessage = OWSOutgoingCallMessage(thread: thread, hangupMessage: hangupMessage) @@ -52,7 +52,16 @@ class DebugUICalling: DebugUIPage { guard let strongSelf = self else { return } let kFakeCallId = UInt64(12345) - let busyMessage = OWSCallBusyMessage(callId: kFakeCallId) + var busyMessage: SSKProtoCallMessageBusy + do { + let busyBuilder = SSKProtoCallMessageBusy.SSKProtoCallMessageBusyBuilder() + busyBuilder.setId(kFakeCallId) + busyMessage = try busyBuilder.build() + } catch { + owsFail("Couldn't build proto in \(#function)") + return + } + let callMessage = OWSOutgoingCallMessage(thread: thread, busyMessage: busyMessage) strongSelf.messageSender.sendPromise(message: callMessage).then { diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index a7ee66230..129e2c828 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -546,12 +546,19 @@ private class SignalCallData: NSObject { Logger.info("\(self.logTag) \(#function) for call: \(call.identifiersForLogs) thread: \(call.thread.contactIdentifier())") SwiftAssertIsOnMainThread(#function) - let busyMessage = OWSCallBusyMessage(callId: call.signalingId) - let callMessage = OWSOutgoingCallMessage(thread: call.thread, busyMessage: busyMessage) - let sendPromise = messageSender.sendPromise(message: callMessage) - sendPromise.retainUntilComplete() + do { + let busyBuilder = SSKProtoCallMessageBusy.SSKProtoCallMessageBusyBuilder() + busyBuilder.setId(call.signalingId) + let busyMessage = try busyBuilder.build() + + let callMessage = OWSOutgoingCallMessage(thread: call.thread, busyMessage: busyMessage) + let sendPromise = messageSender.sendPromise(message: callMessage) + sendPromise.retainUntilComplete() - handleMissedCall(call) + handleMissedCall(call) + } catch { + owsFail("Couldn't build proto in \(#function)") + } } /** diff --git a/SignalServiceKit/src/Messages/OWSCallBusyMessage.h b/SignalServiceKit/src/Messages/OWSCallBusyMessage.h deleted file mode 100644 index 634e686c9..000000000 --- a/SignalServiceKit/src/Messages/OWSCallBusyMessage.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSOutgoingCallMessage.h" - -NS_ASSUME_NONNULL_BEGIN - -@class SSKProtoCallMessageBusy; - -/** - * Sent by the call recipient after receiving a call offer when they are already in a call. - */ -@interface OWSCallBusyMessage : OWSOutgoingCallMessage - -- (instancetype)initWithCallId:(UInt64)callId; - -@property (nonatomic, readonly) UInt64 callId; - -- (nullable SSKProtoCallMessageBusy *)asProtobuf; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSCallBusyMessage.m b/SignalServiceKit/src/Messages/OWSCallBusyMessage.m deleted file mode 100644 index d1c3fa5a7..000000000 --- a/SignalServiceKit/src/Messages/OWSCallBusyMessage.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSCallBusyMessage.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@implementation OWSCallBusyMessage - -- (instancetype)initWithCallId:(UInt64)callId -{ - self = [super init]; - if (!self) { - return self; - } - - _callId = callId; - - return self; -} - -- (nullable SSKProtoCallMessageBusy *)asProtobuf -{ - SSKProtoCallMessageBusyBuilder *builder = [SSKProtoCallMessageBusyBuilder new]; - - builder.id = self.callId; - - NSError *error; - SSKProtoCallMessageBusy *_Nullable result = [builder buildAndReturnError:&error]; - if (error || !result) { - OWSFail(@"%@ could not build protobuf: %@", self.logTag, error); - return nil; - } - return result; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h index ff98a87e9..685c49e1c 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h @@ -6,8 +6,8 @@ NS_ASSUME_NONNULL_BEGIN -@class OWSCallBusyMessage; @class SSKProtoCallMessageAnswer; +@class SSKProtoCallMessageBusy; @class SSKProtoCallMessageHangup; @class SSKProtoCallMessageIceUpdate; @class SSKProtoCallMessageOffer; @@ -35,13 +35,13 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithThread:(TSThread *)thread iceUpdateMessages:(NSArray *)iceUpdateMessage; - (instancetype)initWithThread:(TSThread *)thread hangupMessage:(SSKProtoCallMessageHangup *)hangupMessage; -- (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage; +- (instancetype)initWithThread:(TSThread *)thread busyMessage:(SSKProtoCallMessageBusy *)busyMessage; @property (nullable, nonatomic, readonly) SSKProtoCallMessageOffer *offerMessage; @property (nullable, nonatomic, readonly) SSKProtoCallMessageAnswer *answerMessage; @property (nullable, nonatomic, readonly) NSArray *iceUpdateMessages; @property (nullable, nonatomic, readonly) SSKProtoCallMessageHangup *hangupMessage; -@property (nullable, nonatomic, readonly) OWSCallBusyMessage *busyMessage; +@property (nullable, nonatomic, readonly) SSKProtoCallMessageBusy *busyMessage; @end diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m index dc6165c0e..dd1e6e01b 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m @@ -4,7 +4,6 @@ #import "OWSOutgoingCallMessage.h" #import "NSDate+OWS.h" -#import "OWSCallBusyMessage.h" #import "ProtoUtils.h" #import "SignalRecipient.h" #import "TSContactThread.h" @@ -96,7 +95,7 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage +- (instancetype)initWithThread:(TSThread *)thread busyMessage:(SSKProtoCallMessageBusy *)busyMessage { self = [self initWithThread:thread]; if (!self) { @@ -159,11 +158,7 @@ NS_ASSUME_NONNULL_BEGIN } if (self.busyMessage) { - SSKProtoCallMessageBusy *_Nullable proto = [self.busyMessage asProtobuf]; - if (!proto) { - return nil; - } - [builder setBusy:proto]; + [builder setBusy:self.busyMessage]; } [ProtoUtils addLocalProfileKeyIfNecessary:self.thread recipientId:recipientId callMessageBuilder:builder]; From f4a11f0c6fc3026b1c9b86a5bc36a0bc34468a1f Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 7 Aug 2018 14:47:35 -0400 Subject: [PATCH 6/7] Respond to CR. --- Signal/src/call/CallService.swift | 33 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index 129e2c828..ac1656efb 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -408,10 +408,10 @@ private class SignalCallData: NSObject { } return peerConnectionClient.setLocalSessionDescription(sessionDescription).then { - let offerBuilder = SSKProtoCallMessageOffer.SSKProtoCallMessageOfferBuilder() - offerBuilder.setId(call.signalingId) - offerBuilder.setSessionDescription(sessionDescription.sdp) do { + let offerBuilder = SSKProtoCallMessageOffer.SSKProtoCallMessageOfferBuilder() + offerBuilder.setId(call.signalingId) + offerBuilder.setSessionDescription(sessionDescription.sdp) let offer = try offerBuilder.build() let callMessage = OWSOutgoingCallMessage(thread: call.thread, offerMessage: offer) return self.messageSender.sendPromise(message: callMessage) @@ -719,10 +719,10 @@ private class SignalCallData: NSObject { throw CallError.obsoleteCall(description: "negotiateSessionDescription() response for obsolete call") } - let answerBuilder = SSKProtoCallMessageAnswer.SSKProtoCallMessageAnswerBuilder() - answerBuilder.setId(newCall.signalingId) - answerBuilder.setSessionDescription(negotiatedSessionDescription.sdp) do { + let answerBuilder = SSKProtoCallMessageAnswer.SSKProtoCallMessageAnswerBuilder() + answerBuilder.setId(newCall.signalingId) + answerBuilder.setSessionDescription(negotiatedSessionDescription.sdp) let answer = try answerBuilder.build() let callAnswerMessage = OWSOutgoingCallMessage(thread: thread, answerMessage: answer) @@ -860,17 +860,17 @@ private class SignalCallData: NSObject { Logger.info("\(self.logTag) in \(#function) sending ICE Candidate \(call.identifiersForLogs).") - /** - * Sent by both parties out of band of the RTC calling channels, as part of setting up those channels. The messages - * include network accessibility information from the perspective of each client. Once compatible ICEUpdates have been - * exchanged, the clients can connect directly. - */ - let iceUpdateBuilder = SSKProtoCallMessageIceUpdate.SSKProtoCallMessageIceUpdateBuilder() - iceUpdateBuilder.setId(call.signalingId) - iceUpdateBuilder.setSdp(iceCandidate.sdp) - iceUpdateBuilder.setSdpMlineIndex(UInt32(iceCandidate.sdpMLineIndex)) - iceUpdateBuilder.setSdpMid(sdpMid) do { + /** + * Sent by both parties out of band of the RTC calling channels, as part of setting up those channels. The messages + * include network accessibility information from the perspective of each client. Once compatible ICEUpdates have been + * exchanged, the clients can connect. + */ + let iceUpdateBuilder = SSKProtoCallMessageIceUpdate.SSKProtoCallMessageIceUpdateBuilder() + iceUpdateBuilder.setId(call.signalingId) + iceUpdateBuilder.setSdp(iceCandidate.sdp) + iceUpdateBuilder.setSdpMlineIndex(UInt32(iceCandidate.sdpMLineIndex)) + iceUpdateBuilder.setSdpMid(sdpMid) let iceUpdate = try iceUpdateBuilder.build() let callMessage = OWSOutgoingCallMessage(thread: call.thread, iceUpdateMessage: iceUpdate) @@ -1208,7 +1208,6 @@ private class SignalCallData: NSObject { } // If the call hasn't started yet, we don't have a data channel to communicate the hang up. Use Signal Service Message. - do { let hangupBuilder = SSKProtoCallMessageHangup.SSKProtoCallMessageHangupBuilder() hangupBuilder.setId(call.signalingId) From d239c111d39fd60b85f2f0d52ce231e73146032c Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 7 Aug 2018 14:48:15 -0400 Subject: [PATCH 7/7] Update Cocoapods. --- Pods | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pods b/Pods index 38d58dc5e..b9d00f475 160000 --- a/Pods +++ b/Pods @@ -1 +1 @@ -Subproject commit 38d58dc5ecdb591023706e2240cfde92a39c1968 +Subproject commit b9d00f47530c6c0c219b6c8cfe1802216f3093b9