Fix bug with dropped ice candidates when receiving a call.

fork-5.53.8
Cody Henthorne 2021-02-19 13:07:20 -05:00 zatwierdzone przez GitHub
rodzic 264a245d27
commit c591ec3185
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
5 zmienionych plików z 14 dodań i 48 usunięć

Wyświetl plik

@ -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();

Wyświetl plik

@ -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);

Wyświetl plik

@ -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);

Wyświetl plik

@ -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);

Wyświetl plik

@ -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;
}