Browse Source

fix crash when using publishIp or readIp (#142)

pull/169/head
aler9 6 years ago
parent
commit
cce08c12b6
  1. 2
      README.md
  2. 1
      internal/client/client.go
  3. 75
      main_test.go

2
README.md

@ -17,7 +17,7 @@ Features: @@ -17,7 +17,7 @@ Features:
* Redirect to other RTSP servers (load balancing)
* Run custom commands when clients connect, disconnect, read or publish streams
* Reload the configuration without disconnecting existing clients (hot reloading)
* Compatible with Linux, Windows and Mac, does not require any dependency or interpreter, it's a single executable
* Compatible with Linux, Windows and macOS, does not require any dependency or interpreter, it's a single executable
## Installation and basic usage

1
internal/client/client.go

@ -249,7 +249,6 @@ func (c *Client) Authenticate(authMethods []headers.AuthMethod, ips []interface{ @@ -249,7 +249,6 @@ func (c *Client) Authenticate(authMethods []headers.AuthMethod, ips []interface{
StatusCode: base.StatusUnauthorized,
Header: base.Header{
"CSeq": req.Header["CSeq"],
"WWW-Authenticate": c.authHelper.GenerateHeader(),
},
}}
}

75
main_test.go

@ -285,8 +285,7 @@ func TestPublish(t *testing.T) { @@ -285,8 +285,7 @@ func TestPublish(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
})
}
}
@ -334,8 +333,7 @@ func TestRead(t *testing.T) { @@ -334,8 +333,7 @@ func TestRead(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
default:
args := []string{}
@ -348,8 +346,7 @@ func TestRead(t *testing.T) { @@ -348,8 +346,7 @@ func TestRead(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
}
})
}
@ -384,8 +381,7 @@ func TestTCPOnly(t *testing.T) { @@ -384,8 +381,7 @@ func TestTCPOnly(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
}
func TestPathWithSlash(t *testing.T) {
@ -417,8 +413,7 @@ func TestPathWithSlash(t *testing.T) { @@ -417,8 +413,7 @@ func TestPathWithSlash(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
}
func TestPathWithQuery(t *testing.T) {
@ -450,8 +445,7 @@ func TestPathWithQuery(t *testing.T) { @@ -450,8 +445,7 @@ func TestPathWithQuery(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
}
func TestAuth(t *testing.T) {
@ -490,8 +484,7 @@ func TestAuth(t *testing.T) { @@ -490,8 +484,7 @@ func TestAuth(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
})
for _, soft := range []string{
@ -534,8 +527,7 @@ func TestAuth(t *testing.T) { @@ -534,8 +527,7 @@ func TestAuth(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
} else {
cnt2, err := newContainer("vlc", "dest", []string{
@ -544,13 +536,36 @@ func TestAuth(t *testing.T) { @@ -544,13 +536,36 @@ func TestAuth(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
}
})
}
}
func TestAuthIpFail(t *testing.T) {
p, err := testProgram("paths:\n" +
" all:\n" +
" publishIps: [127.0.0.1/32]\n")
require.NoError(t, err)
defer p.close()
time.Sleep(1 * time.Second)
cnt1, err := newContainer("ffmpeg", "source", []string{
"-re",
"-stream_loop", "-1",
"-i", "/emptyvideo.ts",
"-c", "copy",
"-f", "rtsp",
"-rtsp_transport", "udp",
"rtsp://" + ownDockerIP + ":8554/test/stream",
})
require.NoError(t, err)
defer cnt1.close()
require.NotEqual(t, 0, cnt1.wait())
}
func TestSourceRtsp(t *testing.T) {
for _, proto := range []string{
"udp",
@ -604,8 +619,7 @@ func TestSourceRtsp(t *testing.T) { @@ -604,8 +619,7 @@ func TestSourceRtsp(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
})
}
}
@ -649,8 +663,7 @@ func TestSourceRtmp(t *testing.T) { @@ -649,8 +663,7 @@ func TestSourceRtmp(t *testing.T) {
require.NoError(t, err)
defer cnt3.close()
code := cnt3.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt3.wait())
}
func TestRedirect(t *testing.T) {
@ -688,8 +701,7 @@ func TestRedirect(t *testing.T) { @@ -688,8 +701,7 @@ func TestRedirect(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
}
func TestFallback(t *testing.T) {
@ -726,8 +738,7 @@ func TestFallback(t *testing.T) { @@ -726,8 +738,7 @@ func TestFallback(t *testing.T) {
require.NoError(t, err)
defer cnt2.close()
code := cnt2.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt2.wait())
}
func TestRunOnDemand(t *testing.T) {
@ -748,8 +759,7 @@ func TestRunOnDemand(t *testing.T) { @@ -748,8 +759,7 @@ func TestRunOnDemand(t *testing.T) {
require.NoError(t, err)
defer cnt1.close()
code := cnt1.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt1.wait())
}
func TestHotReloading(t *testing.T) {
@ -782,8 +792,7 @@ func TestHotReloading(t *testing.T) { @@ -782,8 +792,7 @@ func TestHotReloading(t *testing.T) {
require.NoError(t, err)
defer cnt1.close()
code := cnt1.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt1.wait())
}()
err = ioutil.WriteFile(confPath, []byte("paths:\n"+
@ -807,8 +816,7 @@ func TestHotReloading(t *testing.T) { @@ -807,8 +816,7 @@ func TestHotReloading(t *testing.T) {
require.NoError(t, err)
defer cnt1.close()
code := cnt1.wait()
require.Equal(t, 1, code)
require.Equal(t, 1, cnt1.wait())
}()
func() {
@ -821,7 +829,6 @@ func TestHotReloading(t *testing.T) { @@ -821,7 +829,6 @@ func TestHotReloading(t *testing.T) {
require.NoError(t, err)
defer cnt1.close()
code := cnt1.wait()
require.Equal(t, 0, code)
require.Equal(t, 0, cnt1.wait())
}()
}

Loading…
Cancel
Save