Skip restart callback if external. (#4208)

* Skip restart callback if external.

Without out the external restart was bumping forwarder generation twice.

* fix sense
This commit is contained in:
Raja Subramanian authored and GitHub committed 2025-12-30 22:14:06 +05:30
1 parent dde4fb498e
commit 1a4758ed9c
2 files changed
+7 -6

No files matched your search

+5 -5
View File
@@ -487,11 +487,11 @@ func (b *BufferBase) RestartStream(reason string) {
b.Lock()
defer b.Unlock()
b.restartStreamLocked(reason)
b.restartStreamLocked(reason, false)
b.readCond.Broadcast()
}
func (b *BufferBase) restartStreamLocked(reason string) {
func (b *BufferBase) restartStreamLocked(reason string, isDetected bool) {
b.logger.Infow("stream restart", "reason", reason)
// stop
@@ -530,7 +530,7 @@ func (b *BufferBase) restartStreamLocked(reason string) {
b.isRestartPending = true
if f := b.onStreamRestart; f != nil {
if f := b.onStreamRestart; f != nil && isDetected {
go f(reason)
}
}
@@ -754,7 +754,7 @@ func (b *BufferBase) HandleIncomingPacketLocked(
return 0, fmt.Errorf("unhandled reason: %s", flowState.UnhandledReason.String())
}
b.restartStreamLocked("discontinuity")
b.restartStreamLocked("discontinuity", true)
flowState = b.rtpStats.Update(
arrivalTime,
@@ -964,7 +964,7 @@ func (b *BufferBase) handleCodecChange(newPT uint8) {
b.rtxPayloadType = rtxPt
b.mime = mime.NormalizeMimeType(newCodec.MimeType)
b.restartStreamLocked("codec-change")
b.restartStreamLocked("codec-change", true)
if f := b.onCodecChange; f != nil {
go f(newCodec)
+2 -1
View File
@@ -904,6 +904,7 @@ func (r *ReceiverBase) forwardRTP(
"numPacketsDropped", numPacketsDropped,
"forwarderGeneration", forwarderGeneration,
"forwardersGeneration", r.forwardersGeneration.Load(),
"errror", err,
)
wg.Done()
}()
@@ -915,7 +916,7 @@ func (r *ReceiverBase) forwardRTP(
}
pktBuf := make([]byte, bucket.RTPMaxPktSize)
r.params.Logger.Debugw("starting forwarding", "layer", layer)
r.params.Logger.Debugw("starting forwarding", "layer", layer, "forwarderGeneration", forwarderGeneration)
for r.forwardersGeneration.Load() == forwarderGeneration {
extPkt, err = buff.ReadExtended(pktBuf)