mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
return error in OnDecodeError when there are oversized UDP packets
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package gortsplib
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/tls"
|
||||
"net"
|
||||
"testing"
|
||||
@@ -1477,9 +1478,11 @@ func TestServerPublishUDPChangeConn(t *testing.T) {
|
||||
|
||||
func TestServerPublishDecodeErrors(t *testing.T) {
|
||||
for _, ca := range []string{
|
||||
"invalid rtp",
|
||||
"invalid rtcp",
|
||||
"rtp invalid",
|
||||
"rtcp invalid",
|
||||
"packets lost",
|
||||
"rtp too big",
|
||||
"rtcp too big",
|
||||
} {
|
||||
t.Run(ca, func(t *testing.T) {
|
||||
errorRecv := make(chan struct{})
|
||||
@@ -1503,12 +1506,16 @@ func TestServerPublishDecodeErrors(t *testing.T) {
|
||||
},
|
||||
onDecodeError: func(ctx *ServerHandlerOnDecodeErrorCtx) {
|
||||
switch ca {
|
||||
case "invalid rtp":
|
||||
case "rtp invalid":
|
||||
require.EqualError(t, ctx.Error, "RTP header size insufficient: 2 < 4")
|
||||
case "invalid rtcp":
|
||||
case "rtcp invalid":
|
||||
require.EqualError(t, ctx.Error, "rtcp: packet too short")
|
||||
case "packets lost":
|
||||
require.EqualError(t, ctx.Error, "69 RTP packet(s) lost")
|
||||
case "rtp too big":
|
||||
require.EqualError(t, ctx.Error, "RTP packet is too big to be read with UDP")
|
||||
case "rtcp too big":
|
||||
require.EqualError(t, ctx.Error, "RTCP packet is too big to be read with UDP")
|
||||
}
|
||||
close(errorRecv)
|
||||
},
|
||||
@@ -1598,13 +1605,13 @@ func TestServerPublishDecodeErrors(t *testing.T) {
|
||||
require.Equal(t, base.StatusOK, res.StatusCode)
|
||||
|
||||
switch ca { //nolint:dupl
|
||||
case "invalid rtp":
|
||||
case "rtp invalid":
|
||||
l1.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: resTH.ServerPorts[0],
|
||||
})
|
||||
|
||||
case "invalid rtcp":
|
||||
case "rtcp invalid":
|
||||
l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: resTH.ServerPorts[1],
|
||||
@@ -1630,6 +1637,18 @@ func TestServerPublishDecodeErrors(t *testing.T) {
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: resTH.ServerPorts[0],
|
||||
})
|
||||
|
||||
case "rtp too big":
|
||||
l1.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: resTH.ServerPorts[0],
|
||||
})
|
||||
|
||||
case "rtcp too big":
|
||||
l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: resTH.ServerPorts[1],
|
||||
})
|
||||
}
|
||||
|
||||
<-errorRecv
|
||||
|
Reference in New Issue
Block a user