diff --git a/src/signaling/clientsession.go b/src/signaling/clientsession.go index 4900eb3..cf60a59 100644 --- a/src/signaling/clientsession.go +++ b/src/signaling/clientsession.go @@ -26,6 +26,7 @@ import ( "encoding/json" "log" "net/url" + "strings" "sync" "sync/atomic" "time" @@ -40,6 +41,8 @@ var ( // Warn if a session has 32 or more pending messages. warnPendingMessagesCount = 32 + + PathToOcsSignalingBackend = "ocs/v2.php/apps/spreed/api/v1/signaling/backend" ) type ClientSession struct { @@ -111,6 +114,20 @@ func NewClientSession(hub *Hub, privateId string, publicId string, data *Session s.backendUrl = hello.Auth.Url s.parsedBackendUrl = hello.Auth.parsedUrl } + if !strings.Contains(s.backendUrl, "/ocs/v2.php/") { + backendUrl := s.backendUrl + if !strings.HasSuffix(backendUrl, "/") { + backendUrl += "/" + } + backendUrl += PathToOcsSignalingBackend + if u, err := url.Parse(backendUrl); err != nil { + return nil, err + } else { + s.backendUrl = backendUrl + s.parsedBackendUrl = u + } + } + if err := s.SubscribeNats(hub.nats); err != nil { return nil, err } diff --git a/src/signaling/hub_test.go b/src/signaling/hub_test.go index a28d664..0b03d56 100644 --- a/src/signaling/hub_test.go +++ b/src/signaling/hub_test.go @@ -29,6 +29,7 @@ import ( "net/http/httptest" "net/url" "reflect" + "strings" "sync" "sync/atomic" "testing" @@ -291,7 +292,10 @@ func registerBackendHandlerUrl(t *testing.T, router *mux.Router, url string) { }) router.HandleFunc(url, handleFunc) - router.HandleFunc("/ocs/v2.php/apps/spreed/api/v1/signaling/backend", handleFunc) + if !strings.HasSuffix(url, "/") { + url += "/" + } + router.HandleFunc(url+"ocs/v2.php/apps/spreed/api/v1/signaling/backend", handleFunc) } func performHousekeeping(hub *Hub, now time.Time) *sync.WaitGroup {