Skip to content

Commit 3942f8a

Browse files
adityaa30mengelbart
authored andcommitted
Add closedLock in SendSideBWE
Fixes #131
1 parent 2bd7236 commit 3942f8a

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

pkg/gcc/send_side_bwe.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ type SendSideBWE struct {
5050
minBitrate int
5151
maxBitrate int
5252

53-
close chan struct{}
53+
close chan struct{}
54+
closeLock sync.RWMutex
5455
}
5556

5657
// Option configures a bandwidth estimator
@@ -135,7 +136,10 @@ func (e *SendSideBWE) AddStream(info *interceptor.StreamInfo, writer interceptor
135136

136137
// WriteRTCP adds some RTCP feedback to the bandwidth estimator
137138
func (e *SendSideBWE) WriteRTCP(pkts []rtcp.Packet, attributes interceptor.Attributes) error {
138-
if e.IsClosed() {
139+
e.closeLock.RLock()
140+
defer e.closeLock.RUnlock()
141+
142+
if e.isClosed() {
139143
return ErrSendSideBWEClosed
140144
}
141145

@@ -184,8 +188,8 @@ func (e *SendSideBWE) OnTargetBitrateChange(f func(bitrate int)) {
184188
e.onTargetBitrateChange = f
185189
}
186190

187-
// IsClosed returns true if SendSideBWE is closed
188-
func (e *SendSideBWE) IsClosed() bool {
191+
// isClosed returns true if SendSideBWE is closed
192+
func (e *SendSideBWE) isClosed() bool {
189193
select {
190194
case <-e.close:
191195
return true
@@ -196,6 +200,9 @@ func (e *SendSideBWE) IsClosed() bool {
196200

197201
// Close stops and closes the bandwidth estimator
198202
func (e *SendSideBWE) Close() error {
203+
e.closeLock.Lock()
204+
defer e.closeLock.Unlock()
205+
199206
if err := e.delayController.Close(); err != nil {
200207
return err
201208
}

pkg/gcc/send_side_bwe_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ func TestSendSideBWE_ErrorOnWriteRTCPAtClosedState(t *testing.T) {
9898

9999
pkts := []rtcp.Packet{&rtcp.TransportLayerCC{}}
100100
require.NoError(t, bwe.WriteRTCP(pkts, nil))
101-
require.Equal(t, bwe.IsClosed(), false)
101+
require.Equal(t, bwe.isClosed(), false)
102102
require.NoError(t, bwe.Close())
103103
require.ErrorIs(t, bwe.WriteRTCP(pkts, nil), ErrSendSideBWEClosed)
104-
require.Equal(t, bwe.IsClosed(), true)
104+
require.Equal(t, bwe.isClosed(), true)
105105
}

0 commit comments

Comments
 (0)