From ae8c2e29c5c8510332fdfdf3c1041f69446deab4 Mon Sep 17 00:00:00 2001 From: Jonathan Lennox Date: Wed, 17 Jul 2024 16:59:10 -0400 Subject: [PATCH] Catch exceptions rewriting SSRCs in the SSRC cache. --- .../kotlin/org/jitsi/videobridge/SsrcCache.kt | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/jvb/src/main/kotlin/org/jitsi/videobridge/SsrcCache.kt b/jvb/src/main/kotlin/org/jitsi/videobridge/SsrcCache.kt index fc6dd1aeff..ca178a5852 100644 --- a/jvb/src/main/kotlin/org/jitsi/videobridge/SsrcCache.kt +++ b/jvb/src/main/kotlin/org/jitsi/videobridge/SsrcCache.kt @@ -411,23 +411,28 @@ abstract class SsrcCache(val size: Int, val ep: SsrcRewriter, val parentLogger: val remappings = mutableListOf() var send = false - synchronized(sendSources) { - var rs = receivedSsrcs[packet.ssrc] - if (rs == null) { - val props = findSourceProps(packet.ssrc) ?: return false - rs = ReceiveSsrc(props) - receivedSsrcs[packet.ssrc] = rs - logger.debug { "Added receive SSRC: ${packet.ssrc}" } - } + try { + synchronized(sendSources) { + var rs = receivedSsrcs[packet.ssrc] + if (rs == null) { + val props = findSourceProps(packet.ssrc) ?: return false + rs = ReceiveSsrc(props) + receivedSsrcs[packet.ssrc] = rs + logger.debug { "Added receive SSRC: ${packet.ssrc}" } + } - val ss = getSendSource(rs.props.ssrc1, rs.props, allowCreateOnPacket, remappings) - if (ss != null) { - send = ss.rewriteRtp(packet, start, rs) + val ss = getSendSource(rs.props.ssrc1, rs.props, allowCreateOnPacket, remappings) + if (ss != null) { + send = ss.rewriteRtp(packet, start, rs) + } } - } - if (remappings.isNotEmpty()) { - notifyMappings(remappings) + if (remappings.isNotEmpty()) { + notifyMappings(remappings) + } + } catch (e: Exception) { + logger.error("Error rewriting SSRC", e) + send = false } return send