mirror of
https://github.com/aler9/rtsp-simple-server
synced 2025-10-06 08:06:58 +08:00
webrtc: return an error when proxying stream with no tracks (#3042)
This commit is contained in:
@@ -404,6 +404,37 @@ func TestPathRunOnRead(t *testing.T) {
|
|||||||
Log: test.NilLogger{},
|
Log: test.NilLogger{},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
writerDone := make(chan struct{})
|
||||||
|
defer func() { <-writerDone }()
|
||||||
|
|
||||||
|
writerTerminate := make(chan struct{})
|
||||||
|
defer close(writerTerminate)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
defer close(writerDone)
|
||||||
|
i := uint16(0)
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-time.After(100 * time.Millisecond):
|
||||||
|
case <-writerTerminate:
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err := source.WritePacketRTP(testMediaH264, &rtp.Packet{
|
||||||
|
Header: rtp.Header{
|
||||||
|
Version: 2,
|
||||||
|
Marker: true,
|
||||||
|
PayloadType: 96,
|
||||||
|
SequenceNumber: 123 + i,
|
||||||
|
Timestamp: 45343,
|
||||||
|
SSRC: 563423,
|
||||||
|
},
|
||||||
|
Payload: []byte{5},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
_, err = c.Read(context.Background())
|
_, err = c.Read(context.Background())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer checkClose(t, c.Close)
|
defer checkClose(t, c.Close)
|
||||||
|
@@ -227,7 +227,7 @@ outer:
|
|||||||
// GatherIncomingTracks gathers incoming tracks.
|
// GatherIncomingTracks gathers incoming tracks.
|
||||||
func (co *PeerConnection) GatherIncomingTracks(
|
func (co *PeerConnection) GatherIncomingTracks(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
count int,
|
maxCount int,
|
||||||
) ([]*IncomingTrack, error) {
|
) ([]*IncomingTrack, error) {
|
||||||
var tracks []*IncomingTrack
|
var tracks []*IncomingTrack
|
||||||
|
|
||||||
@@ -237,7 +237,7 @@ func (co *PeerConnection) GatherIncomingTracks(
|
|||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-t.C:
|
case <-t.C:
|
||||||
if count == 0 {
|
if maxCount == 0 && len(tracks) != 0 {
|
||||||
return tracks, nil
|
return tracks, nil
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("deadline exceeded while waiting tracks")
|
return nil, fmt.Errorf("deadline exceeded while waiting tracks")
|
||||||
@@ -249,7 +249,7 @@ func (co *PeerConnection) GatherIncomingTracks(
|
|||||||
}
|
}
|
||||||
tracks = append(tracks, track)
|
tracks = append(tracks, track)
|
||||||
|
|
||||||
if len(tracks) == count || len(tracks) >= 2 {
|
if len(tracks) == maxCount || len(tracks) >= 2 {
|
||||||
return tracks, nil
|
return tracks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user