Add mutext to streams handlers

This commit is contained in:
Alexey Khit
2022-11-04 17:04:47 +03:00
parent 65d91e02bd
commit 54f547977e
+7 -4
View File
@@ -4,17 +4,18 @@ import (
"fmt" "fmt"
"github.com/AlexxIT/go2rtc/pkg/streamer" "github.com/AlexxIT/go2rtc/pkg/streamer"
"strings" "strings"
"sync"
) )
type Handler func(url string) (streamer.Producer, error) type Handler func(url string) (streamer.Producer, error)
var handlers map[string]Handler var handlers = map[string]Handler{}
var handlersMu sync.Mutex
func HandleFunc(scheme string, handler Handler) { func HandleFunc(scheme string, handler Handler) {
if handlers == nil { handlersMu.Lock()
handlers = make(map[string]Handler)
}
handlers[scheme] = handler handlers[scheme] = handler
handlersMu.Unlock()
} }
func getHandler(url string) Handler { func getHandler(url string) Handler {
@@ -22,6 +23,8 @@ func getHandler(url string) Handler {
if i <= 0 { // TODO: i < 4 ? if i <= 0 { // TODO: i < 4 ?
return nil return nil
} }
handlersMu.Lock()
defer handlersMu.Unlock()
return handlers[url[:i]] return handlers[url[:i]]
} }