From 3dbef9802ff47c423b07280e89ea25088fa7c818 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 22 Mar 2024 13:06:34 +0100 Subject: [PATCH] Calls: Fix phone calls (#4406) --- src/lib/secret-sauce/p2p.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/lib/secret-sauce/p2p.ts b/src/lib/secret-sauce/p2p.ts index 5c8f8aefa..73ce6ccd3 100644 --- a/src/lib/secret-sauce/p2p.ts +++ b/src/lib/secret-sauce/p2p.ts @@ -5,8 +5,8 @@ import type { MediaContent, MediaStateMessage, P2pMessage } from './p2pMessage'; import { fromTelegramSource, IS_ECHO_CANCELLATION_SUPPORTED, - IS_NOISE_SUPPRESSION_SUPPORTED, isRelayAddress, - p2pPayloadTypeToConference, removeRelatedAddress, + IS_NOISE_SUPPRESSION_SUPPORTED, + p2pPayloadTypeToConference, } from './utils'; import buildSdp, { Conference } from './buildSdp'; import { StreamType } from './secretsauce'; @@ -38,6 +38,8 @@ type P2pState = { let state: P2pState | undefined; +const ICE_CANDIDATE_POOL_SIZE = 10; + export function getStreams() { return state?.streams; } @@ -189,7 +191,8 @@ export async function joinPhoneCall( } )), iceTransportPolicy: isP2p ? 'all' : 'relay', - bundlePolicy: 'max-bundle' + bundlePolicy: 'max-bundle', + iceCandidatePoolSize: ICE_CANDIDATE_POOL_SIZE, }); conn.onicecandidate = (e) => { @@ -463,9 +466,8 @@ export async function processSignalingMessage(message: P2pMessage) { if (!isOutgoing) { const answer = await connection.createAnswer(); - if (!answer) return; await connection.setLocalDescription(answer); - sendInitialSetup(parseSdp(answer, true) as P2pParsedSdp); + sendInitialSetup(parseSdp(connection.localDescription!, true) as P2pParsedSdp); } state.gotInitialSetup = true; await commitPendingIceCandidates(); @@ -497,8 +499,8 @@ async function tryAddCandidate(connection: RTCPeerConnection, candidate: string) } } -async function createOffer(pc: RTCPeerConnection, params: RTCOfferOptions) { - const offer = await pc.createOffer(params); - sendInitialSetup(parseSdp(offer, true) as P2pParsedSdp); - await pc.setLocalDescription(offer); +async function createOffer(conn: RTCPeerConnection, params: RTCOfferOptions) { + const offer = await conn.createOffer(params); + await conn.setLocalDescription(offer); + sendInitialSetup(parseSdp(conn.localDescription!, true) as P2pParsedSdp); }