client: support servers which don't provide UDP ports (#21)

This commit is contained in:
aler9
2021-01-20 23:23:35 +01:00
parent c6e0294e1c
commit b9dfe1b310
4 changed files with 50 additions and 10 deletions

View File

@@ -220,10 +220,43 @@ func TestClientDialReadZeroServerPorts(t *testing.T) {
},
}.Write(bconn.Writer)
require.NoError(t, err)
err = req.Read(bconn.Reader)
require.NoError(t, err)
require.Equal(t, base.Play, req.Method)
err = base.Response{
StatusCode: base.StatusOK,
}.Write(bconn.Writer)
require.NoError(t, err)
time.Sleep(1 * time.Second)
l1, err := net.ListenPacket("udp", "localhost:0")
require.NoError(t, err)
defer l1.Close()
l1.WriteTo([]byte("\x00\x00\x00\x00"), &net.UDPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: th.ClientPorts[0],
})
}()
_, err = DialRead("rtsp://localhost:8554/teststream")
require.Equal(t, "server ports are zero", err.Error())
conf := ClientConf{
AnyPortEnable: true,
}
conn, err := conf.DialRead("rtsp://localhost:8554/teststream")
require.NoError(t, err)
frameRecv := make(chan struct{})
done := conn.ReadFrames(func(id int, typ StreamType, payload []byte) {
close(frameRecv)
})
<-frameRecv
conn.Close()
<-done
}
func TestClientDialReadAutomaticProtocol(t *testing.T) {