diff --git a/package.json b/package.json index 76e94b4a..a9b13a23 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "express": "4.18.2", "httpolyglot": "0.1.2", "mediasoup": "3.12.10", - "mediasoup-client": "3.6.99", + "mediasoup-client": "3.6.100", "ngrok": "^4.3.3", "openai": "^4.2.0", "qs": "6.11.2", diff --git a/public/sfu/MediasoupClient.js b/public/sfu/MediasoupClient.js index 5f8fcc0a..3e781604 100644 --- a/public/sfu/MediasoupClient.js +++ b/public/sfu/MediasoupClient.js @@ -12338,13 +12338,22 @@ } exports.extractRtpCapabilities = extractRtpCapabilities; function extractDtlsParameters({ sdpObject }) { - const mediaObject = (sdpObject.media || []).find((m) => m.port !== 0 && m.setup); - if (!mediaObject) { - throw new Error('no active media section with DTLS role found'); + let setup = sdpObject.setup; + let fingerprint = sdpObject.fingerprint; + if (!setup || !fingerprint) { + const mediaObject = (sdpObject.media || []).find((m) => m.port !== 0); + if (mediaObject) { + setup ?? (setup = mediaObject.setup); + fingerprint ?? (fingerprint = mediaObject.fingerprint); + } + } + if (!setup) { + throw new Error('no a=setup found at SDP session or media level'); + } else if (!fingerprint) { + throw new Error('no a=fingerprint found at SDP session or media level'); } - const fingerprint = mediaObject.fingerprint || sdpObject.fingerprint; let role; - switch (mediaObject.setup) { + switch (setup) { case 'active': role = 'client'; break; @@ -12787,7 +12796,7 @@ /** * Expose mediasoup-client version. */ - exports.version = '3.6.99'; + exports.version = '3.6.100'; /** * Expose parseScalabilityMode() function. */