package httpp_test import ( "net" "net/http" "os" "strings" "testing" "time" "github.com/stretchr/testify/require" "github.com/bluenviron/mediamtx/internal/protocols/httpp" "github.com/bluenviron/mediamtx/internal/test" ) func TestUnixSocket(t *testing.T) { s := &httpp.Server{ Address: "unix://http.sock", ReadTimeout: 10 * time.Second, WriteTimeout: 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) info, err := os.Stat("http.sock") require.NoError(t, err) require.Equal(t, os.FileMode(0o755), info.Mode().Perm()) 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") }