mirror of
https://github.com/aler9/rtsp-simple-server
synced 2025-10-05 15:46:58 +08:00

This adds support for using unix scheme in xxxAddress config options. For example `hlsAddress: "unix://hls.sock"`. --------- Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package httpp
|
|
|
|
import (
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/bluenviron/mediamtx/internal/test"
|
|
)
|
|
|
|
func TestFilterEmptyPath(t *testing.T) {
|
|
s := &Server{
|
|
Address: "localhost:4555",
|
|
ReadTimeout: 10 * time.Second,
|
|
Parent: test.NilLogger,
|
|
Handler: http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
}),
|
|
}
|
|
err := s.Initialize()
|
|
require.NoError(t, err)
|
|
defer s.Close()
|
|
|
|
conn, err := net.Dial("tcp", "localhost:4555")
|
|
require.NoError(t, err)
|
|
defer conn.Close()
|
|
|
|
_, err = conn.Write([]byte("OPTIONS / HTTP/1.1\n" +
|
|
"Host: localhost:8889\n\n"))
|
|
require.NoError(t, err)
|
|
|
|
buf := make([]byte, 200)
|
|
n, err := conn.Read(buf)
|
|
require.NoError(t, err)
|
|
|
|
res := strings.Split(string(buf[:n]), "\r\n")
|
|
require.Equal(t, "HTTP/1.1 200 OK", res[0])
|
|
}
|
|
|
|
func TestUnixSocket(t *testing.T) {
|
|
s := &Server{
|
|
Address: "unix://http.sock",
|
|
ReadTimeout: 10 * time.Second,
|
|
Parent: test.NilLogger,
|
|
Handler: http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
}),
|
|
}
|
|
err := s.Initialize()
|
|
require.NoError(t, err)
|
|
|
|
_, err = os.Stat("http.sock")
|
|
require.NoError(t, err)
|
|
|
|
conn, err := net.Dial("unix", "http.sock")
|
|
require.NoError(t, err)
|
|
|
|
_, err = conn.Write([]byte("OPTIONS / HTTP/1.1\n" +
|
|
"Host: localhost:8889\n\n"))
|
|
require.NoError(t, err)
|
|
|
|
buf := make([]byte, 200)
|
|
n, err := conn.Read(buf)
|
|
require.NoError(t, err)
|
|
|
|
res := strings.Split(string(buf[:n]), "\r\n")
|
|
require.Equal(t, "HTTP/1.1 200 OK", res[0])
|
|
|
|
conn.Close()
|
|
s.Close()
|
|
|
|
_, err = os.Stat("http.sock")
|
|
require.EqualError(t, err, "stat http.sock: no such file or directory")
|
|
}
|