diff --git a/SignalServiceKit/src/Messages/OWSMessageHandler.m b/SignalServiceKit/src/Messages/OWSMessageHandler.m
index 4256fa80a..0f6d603c3 100644
--- a/SignalServiceKit/src/Messages/OWSMessageHandler.m
+++ b/SignalServiceKit/src/Messages/OWSMessageHandler.m
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
+// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSMessageHandler.h"
@@ -63,7 +63,8 @@ NSString *envelopeAddress(OWSSignalServiceProtosEnvelope *envelope)
} else if (content.hasDataMessage) {
return [NSString stringWithFormat:@"", [self descriptionForDataMessage:content.dataMessage]];
} else if (content.hasCallMessage) {
- return [NSString stringWithFormat:@"", content.callMessage];
+ NSString *callMessageDescription = [self descriptionForCallMessage:content.callMessage];
+ return [NSString stringWithFormat:@"", callMessageDescription];
} else if (content.hasNullMessage) {
return [NSString stringWithFormat:@"", content.nullMessage];
} else if (content.hasReceiptMessage) {
@@ -76,6 +77,35 @@ NSString *envelopeAddress(OWSSignalServiceProtosEnvelope *envelope)
}
}
+- (NSString *)descriptionForCallMessage:(OWSSignalServiceProtosCallMessage *)callMessage
+{
+ NSString *messageType;
+ UInt64 callId;
+
+ if (callMessage.hasOffer) {
+ messageType = @"Offer";
+ callId = callMessage.offer.id;
+ } else if (callMessage.hasBusy) {
+ messageType = @"Busy";
+ callId = callMessage.busy.id;
+ } else if (callMessage.hasAnswer) {
+ messageType = @"Answer";
+ callId = callMessage.answer.id;
+ } else if (callMessage.hasHangup) {
+ messageType = @"Hangup";
+ callId = callMessage.hangup.id;
+ } else if (callMessage.iceUpdate.count > 0) {
+ messageType = [NSString stringWithFormat:@"Ice Updates (%lu)", (unsigned long)callMessage.iceUpdate.count];
+ callId = callMessage.iceUpdate.firstObject.id;
+ } else {
+ OWSFail(@"%@ failure: unexpected call message type: %@", self.logTag, callMessage);
+ messageType = @"Unknown";
+ callId = 0;
+ }
+
+ return [NSString stringWithFormat:@"type: %@, id: %llu", messageType, callId];
+}
+
/**
* We don't want to just log `dataMessage.description` because we'd potentially log message contents
*/