ensure server replies to teardown reqeuests (https://github.com/aler9/rtsp-simple-server/issues/151)

This commit is contained in:
aler9
2020-12-12 23:29:49 +01:00
parent 48c96be2b5
commit 4c942d33fe

View File

@@ -1,7 +1,10 @@
package gortsplib package gortsplib
import ( import (
"bufio"
"fmt" "fmt"
"io"
"net"
"strings" "strings"
"sync" "sync"
"testing" "testing"
@@ -267,3 +270,33 @@ func TestServerPublishReadTCP(t *testing.T) {
require.Equal(t, 0, cnt2.wait()) require.Equal(t, 0, cnt2.wait())
} }
func TestServerTeardown(t *testing.T) {
ts, err := newTestServ()
require.NoError(t, err)
defer ts.close()
conn, err := net.Dial("tcp", "localhost:8554")
require.NoError(t, err)
defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
req := base.Request{
Method: base.Teardown,
URL: base.MustParseURL("rtsp://localhost:8554/"),
Header: base.Header{
"CSeq": base.HeaderValue{"1"},
},
}
err = req.Write(bconn.Writer)
require.NoError(t, err)
var res base.Response
err = res.Read(bconn.Reader)
require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode)
buf := make([]byte, 2048)
_, err = bconn.Read(buf)
require.Equal(t, io.EOF, err)
}