mirror of
https://github.com/bluenviron/mediamtx
synced 2025-02-20 21:46:56 +00:00
fix crash when using publishIp or readIp (#142)
This commit is contained in:
parent
6e352aca7f
commit
cce08c12b6
@ -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
|
||||
|
||||
|
@ -248,8 +248,7 @@ func (c *Client) Authenticate(authMethods []headers.AuthMethod, ips []interface{
|
||||
return errAuthCritical{&base.Response{
|
||||
StatusCode: base.StatusUnauthorized,
|
||||
Header: base.Header{
|
||||
"CSeq": req.Header["CSeq"],
|
||||
"WWW-Authenticate": c.authHelper.GenerateHeader(),
|
||||
"CSeq": req.Header["CSeq"],
|
||||
},
|
||||
}}
|
||||
}
|
||||
|
75
main_test.go
75
main_test.go
@ -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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
require.NoError(t, err)
|
||||
defer cnt1.close()
|
||||
|
||||
code := cnt1.wait()
|
||||
require.Equal(t, 0, code)
|
||||
require.Equal(t, 0, cnt1.wait())
|
||||
}()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user