Skip to content

Commit f822379

Browse files
m1k1ostv0g
authored andcommitted
Fix set extension on nil header
1 parent 8b05cf4 commit f822379

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

pkg/twcc/header_extension_interceptor.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
package twcc
55

66
import (
7+
"errors"
78
"sync/atomic"
89

910
"github.com/pion/interceptor"
1011
"github.com/pion/rtp"
1112
)
1213

14+
var errHeaderIsNil = errors.New("header is nil")
15+
1316
// HeaderExtensionInterceptorFactory is a interceptor.Factory for a HeaderExtensionInterceptor
1417
type HeaderExtensionInterceptorFactory struct{}
1518

@@ -51,6 +54,9 @@ func (h *HeaderExtensionInterceptor) BindLocalStream(info *interceptor.StreamInf
5154
if err != nil {
5255
return 0, err
5356
}
57+
if header == nil {
58+
return 0, errHeaderIsNil
59+
}
5460
err = header.SetExtension(hdrExtID, tcc)
5561
if err != nil {
5662
return 0, err

pkg/twcc/header_extension_interceptor_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package twcc
55

66
import (
7+
"io"
78
"sync"
89
"testing"
910
"time"
@@ -15,6 +16,26 @@ import (
1516
)
1617

1718
func TestHeaderExtensionInterceptor(t *testing.T) {
19+
t.Run("if header is nil, return error", func(t *testing.T) {
20+
factory, err := NewHeaderExtensionInterceptor()
21+
assert.NoError(t, err)
22+
23+
inter, err := factory.NewInterceptor("")
24+
assert.NoError(t, err)
25+
26+
fn := inter.BindLocalStream(&interceptor.StreamInfo{RTPHeaderExtensions: []interceptor.RTPHeaderExtension{
27+
{
28+
URI: transportCCURI,
29+
ID: 1,
30+
},
31+
}}, interceptor.RTPWriterFunc(func(header *rtp.Header, payload []byte, attributes interceptor.Attributes) (int, error) {
32+
return 0, io.EOF
33+
}))
34+
35+
_, err = fn.Write(nil, []byte{}, interceptor.Attributes{})
36+
assert.Equal(t, errHeaderIsNil, err)
37+
})
38+
1839
t.Run("add transport wide cc to each packet", func(t *testing.T) {
1940
factory, err := NewHeaderExtensionInterceptor()
2041
assert.NoError(t, err)

0 commit comments

Comments
 (0)