mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Detect real age of call request by using server timestamps.
This commit is contained in:
committed by
Alan Evans
parent
891a1af995
commit
629ba105cb
@@ -95,26 +95,27 @@ public class WebRtcCallService extends Service implements CallManager.Observer,
|
||||
|
||||
private static final String TAG = WebRtcCallService.class.getSimpleName();
|
||||
|
||||
public static final String EXTRA_MUTE = "mute_value";
|
||||
public static final String EXTRA_AVAILABLE = "enabled_value";
|
||||
public static final String EXTRA_TIMESTAMP = "timestamp";
|
||||
public static final String EXTRA_CALL_ID = "call_id";
|
||||
public static final String EXTRA_RESULT_RECEIVER = "result_receiver";
|
||||
public static final String EXTRA_SPEAKER = "audio_speaker";
|
||||
public static final String EXTRA_BLUETOOTH = "audio_bluetooth";
|
||||
public static final String EXTRA_REMOTE_PEER = "remote_peer";
|
||||
public static final String EXTRA_REMOTE_DEVICE = "remote_device";
|
||||
public static final String EXTRA_OFFER_DESCRIPTION = "offer_description";
|
||||
public static final String EXTRA_OFFER_TYPE = "offer_type";
|
||||
public static final String EXTRA_MULTI_RING = "multi_ring";
|
||||
public static final String EXTRA_HANGUP_TYPE = "hangup_type";
|
||||
public static final String EXTRA_HANGUP_IS_LEGACY = "hangup_is_legacy";
|
||||
public static final String EXTRA_HANGUP_DEVICE_ID = "hangup_device_id";
|
||||
public static final String EXTRA_ANSWER_DESCRIPTION = "answer_description";
|
||||
public static final String EXTRA_ICE_CANDIDATES = "ice_candidates";
|
||||
public static final String EXTRA_ENABLE = "enable_value";
|
||||
public static final String EXTRA_BROADCAST = "broadcast";
|
||||
public static final String EXTRA_ANSWER_WITH_VIDEO = "enable_video";
|
||||
public static final String EXTRA_MUTE = "mute_value";
|
||||
public static final String EXTRA_AVAILABLE = "enabled_value";
|
||||
public static final String EXTRA_SERVER_RECEIVED_TIMESTAMP = "server_received_timestamp";
|
||||
public static final String EXTRA_SERVER_DELIVERED_TIMESTAMP = "server_delivered_timestamp";
|
||||
public static final String EXTRA_CALL_ID = "call_id";
|
||||
public static final String EXTRA_RESULT_RECEIVER = "result_receiver";
|
||||
public static final String EXTRA_SPEAKER = "audio_speaker";
|
||||
public static final String EXTRA_BLUETOOTH = "audio_bluetooth";
|
||||
public static final String EXTRA_REMOTE_PEER = "remote_peer";
|
||||
public static final String EXTRA_REMOTE_DEVICE = "remote_device";
|
||||
public static final String EXTRA_OFFER_DESCRIPTION = "offer_description";
|
||||
public static final String EXTRA_OFFER_TYPE = "offer_type";
|
||||
public static final String EXTRA_MULTI_RING = "multi_ring";
|
||||
public static final String EXTRA_HANGUP_TYPE = "hangup_type";
|
||||
public static final String EXTRA_HANGUP_IS_LEGACY = "hangup_is_legacy";
|
||||
public static final String EXTRA_HANGUP_DEVICE_ID = "hangup_device_id";
|
||||
public static final String EXTRA_ANSWER_DESCRIPTION = "answer_description";
|
||||
public static final String EXTRA_ICE_CANDIDATES = "ice_candidates";
|
||||
public static final String EXTRA_ENABLE = "enable_value";
|
||||
public static final String EXTRA_BROADCAST = "broadcast";
|
||||
public static final String EXTRA_ANSWER_WITH_VIDEO = "enable_video";
|
||||
|
||||
public static final String ACTION_OUTGOING_CALL = "CALL_OUTGOING";
|
||||
public static final String ACTION_DENY_CALL = "DENY_CALL";
|
||||
@@ -383,13 +384,14 @@ public class WebRtcCallService extends Service implements CallManager.Observer,
|
||||
// Handlers
|
||||
|
||||
private void handleReceivedOffer(Intent intent) {
|
||||
CallId callId = getCallId(intent);
|
||||
RemotePeer remotePeer = getRemotePeer(intent);
|
||||
Integer remoteDevice = intent.getIntExtra(EXTRA_REMOTE_DEVICE, -1);
|
||||
String offer = intent.getStringExtra(EXTRA_OFFER_DESCRIPTION);
|
||||
Long timeStamp = intent.getLongExtra(EXTRA_TIMESTAMP, -1);
|
||||
OfferMessage.Type offerType = OfferMessage.Type.fromCode(intent.getStringExtra(EXTRA_OFFER_TYPE));
|
||||
boolean isMultiRing = intent.getBooleanExtra(EXTRA_MULTI_RING, false);
|
||||
CallId callId = getCallId(intent);
|
||||
RemotePeer remotePeer = getRemotePeer(intent);
|
||||
Integer remoteDevice = intent.getIntExtra(EXTRA_REMOTE_DEVICE, -1);
|
||||
String offer = intent.getStringExtra(EXTRA_OFFER_DESCRIPTION);
|
||||
long serverReceivedTimestamp = intent.getLongExtra(EXTRA_SERVER_RECEIVED_TIMESTAMP, -1);
|
||||
long serverDeliveredTimestamp = intent.getLongExtra(EXTRA_SERVER_DELIVERED_TIMESTAMP, -1);
|
||||
OfferMessage.Type offerType = OfferMessage.Type.fromCode(intent.getStringExtra(EXTRA_OFFER_TYPE));
|
||||
boolean isMultiRing = intent.getBooleanExtra(EXTRA_MULTI_RING, false);
|
||||
|
||||
Log.i(TAG, "handleReceivedOffer(): id: " + callId.format(remoteDevice));
|
||||
|
||||
@@ -413,12 +415,8 @@ public class WebRtcCallService extends Service implements CallManager.Observer,
|
||||
|
||||
CallManager.CallMediaType callType = getCallMediaTypeFromOfferType(offerType);
|
||||
|
||||
long timeMilli = new Date().getTime();
|
||||
long messageAgeSec = 0L;
|
||||
if (timeMilli > timeStamp) {
|
||||
messageAgeSec = (timeMilli - timeStamp) / 1000;
|
||||
}
|
||||
Log.i(TAG, "handleReceivedOffer(): messageAgeSec: " + messageAgeSec);
|
||||
long messageAgeSec = Math.max(serverDeliveredTimestamp - serverReceivedTimestamp, 0) / 1000;
|
||||
Log.i(TAG, "handleReceivedOffer(): messageAgeSec: " + messageAgeSec + ", serverReceivedTimestamp: " + serverReceivedTimestamp + ", serverDeliveredTimestamp: " + serverDeliveredTimestamp);
|
||||
|
||||
try {
|
||||
callManager.receivedOffer(callId, remotePeer, remoteDevice, offer, messageAgeSec, callType, 1, isMultiRing, true);
|
||||
|
||||
Reference in New Issue
Block a user