mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-23 19:26:17 +00:00
Fix bug with dropped ice candidates when receiving a call.
This commit is contained in:
@@ -88,27 +88,6 @@ public class ActiveCallActionProcessorDelegate extends WebRtcActionProcessor {
|
||||
return currentState;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NonNull WebRtcServiceState handleReceivedIceCandidates(@NonNull WebRtcServiceState currentState,
|
||||
@NonNull WebRtcData.CallMetadata callMetadata,
|
||||
@NonNull ArrayList<IceCandidateParcel> iceCandidateParcels)
|
||||
{
|
||||
Log.i(tag, "handleReceivedIceCandidates(): id: " + callMetadata.getCallId().format(callMetadata.getRemoteDevice()) + ", count: " + iceCandidateParcels.size());
|
||||
|
||||
LinkedList<byte[]> iceCandidates = new LinkedList<>();
|
||||
for (IceCandidateParcel parcel : iceCandidateParcels) {
|
||||
iceCandidates.add(parcel.getIceCandidate());
|
||||
}
|
||||
|
||||
try {
|
||||
webRtcInteractor.getCallManager().receivedIceCandidates(callMetadata.getCallId(), callMetadata.getRemoteDevice(), iceCandidates);
|
||||
} catch (CallException e) {
|
||||
return callFailure(currentState, "receivedIceCandidates() failed: ", e);
|
||||
}
|
||||
|
||||
return currentState;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NonNull WebRtcServiceState handleRemoteVideoEnable(@NonNull WebRtcServiceState currentState, boolean enable) {
|
||||
RemotePeer activePeer = currentState.getCallInfoState().requireActivePeer();
|
||||
|
||||
@@ -90,14 +90,6 @@ public class ConnectedCallActionProcessor extends DeviceAwareActionProcessor {
|
||||
return activeCallDelegate.handleSendIceCandidates(currentState, callMetadata, broadcast, iceCandidates);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NonNull WebRtcServiceState handleReceivedIceCandidates(@NonNull WebRtcServiceState currentState,
|
||||
@NonNull WebRtcData.CallMetadata callMetadata,
|
||||
@NonNull ArrayList<IceCandidateParcel> iceCandidateParcels)
|
||||
{
|
||||
return activeCallDelegate.handleReceivedIceCandidates(currentState, callMetadata, iceCandidateParcels);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NonNull WebRtcServiceState handleLocalHangup(@NonNull WebRtcServiceState currentState) {
|
||||
return activeCallDelegate.handleLocalHangup(currentState);
|
||||
|
||||
@@ -227,14 +227,6 @@ public class IncomingCallActionProcessor extends DeviceAwareActionProcessor {
|
||||
return activeCallDelegate.handleSendIceCandidates(currentState, callMetadata, broadcast, iceCandidates);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NonNull WebRtcServiceState handleReceivedIceCandidates(@NonNull WebRtcServiceState currentState,
|
||||
@NonNull WebRtcData.CallMetadata callMetadata,
|
||||
@NonNull ArrayList<IceCandidateParcel> iceCandidateParcels)
|
||||
{
|
||||
return activeCallDelegate.handleReceivedIceCandidates(currentState, callMetadata, iceCandidateParcels);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull WebRtcServiceState handleCallConnected(@NonNull WebRtcServiceState currentState, @NonNull RemotePeer remotePeer) {
|
||||
return callSetupDelegate.handleCallConnected(currentState, remotePeer);
|
||||
|
||||
@@ -231,14 +231,6 @@ public class OutgoingCallActionProcessor extends DeviceAwareActionProcessor {
|
||||
return activeCallDelegate.handleSendIceCandidates(currentState, callMetadata, broadcast, iceCandidates);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NonNull WebRtcServiceState handleReceivedIceCandidates(@NonNull WebRtcServiceState currentState,
|
||||
@NonNull WebRtcData.CallMetadata callMetadata,
|
||||
@NonNull ArrayList<IceCandidateParcel> iceCandidateParcels)
|
||||
{
|
||||
return activeCallDelegate.handleReceivedIceCandidates(currentState, callMetadata, iceCandidateParcels);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull WebRtcServiceState handleCallConnected(@NonNull WebRtcServiceState currentState, @NonNull RemotePeer remotePeer) {
|
||||
return callSetupDelegate.handleCallConnected(currentState, remotePeer);
|
||||
|
||||
@@ -4,14 +4,12 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.ResultReceiver;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.ringrtc.CallException;
|
||||
import org.signal.ringrtc.CallId;
|
||||
import org.signal.ringrtc.CallManager;
|
||||
import org.signal.ringrtc.GroupCall;
|
||||
import org.thoughtcrime.securesms.components.sensors.Orientation;
|
||||
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
|
||||
@@ -43,6 +41,7 @@ import org.whispersystems.signalservice.api.messages.calls.OfferMessage;
|
||||
import org.whispersystems.signalservice.api.messages.calls.SignalServiceCallMessage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -558,7 +557,19 @@ public abstract class WebRtcActionProcessor {
|
||||
}
|
||||
|
||||
protected @NonNull WebRtcServiceState handleReceivedIceCandidates(@NonNull WebRtcServiceState currentState, @NonNull CallMetadata callMetadata, @NonNull ArrayList<IceCandidateParcel> iceCandidateParcels) {
|
||||
Log.i(tag, "handleReceivedIceCandidates not processed");
|
||||
Log.i(tag, "handleReceivedIceCandidates(): id: " + callMetadata.getCallId().format(callMetadata.getRemoteDevice()) + ", count: " + iceCandidateParcels.size());
|
||||
|
||||
LinkedList<byte[]> iceCandidates = new LinkedList<>();
|
||||
for (IceCandidateParcel parcel : iceCandidateParcels) {
|
||||
iceCandidates.add(parcel.getIceCandidate());
|
||||
}
|
||||
|
||||
try {
|
||||
webRtcInteractor.getCallManager().receivedIceCandidates(callMetadata.getCallId(), callMetadata.getRemoteDevice(), iceCandidates);
|
||||
} catch (CallException e) {
|
||||
return callFailure(currentState, "receivedIceCandidates() failed: ", e);
|
||||
}
|
||||
|
||||
return currentState;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user