Make sure the backend URL always points to the signaling controller.

This commit is contained in:
Joachim Bauch 2020-10-21 16:26:57 +02:00
parent 669ec5c1af
commit b6ce723a8b
Failed to extract signature
2 changed files with 22 additions and 1 deletions

View file

@ -26,6 +26,7 @@ import (
"encoding/json" "encoding/json"
"log" "log"
"net/url" "net/url"
"strings"
"sync" "sync"
"sync/atomic" "sync/atomic"
"time" "time"
@ -40,6 +41,8 @@ var (
// Warn if a session has 32 or more pending messages. // Warn if a session has 32 or more pending messages.
warnPendingMessagesCount = 32 warnPendingMessagesCount = 32
PathToOcsSignalingBackend = "ocs/v2.php/apps/spreed/api/v1/signaling/backend"
) )
type ClientSession struct { type ClientSession struct {
@ -111,6 +114,20 @@ func NewClientSession(hub *Hub, privateId string, publicId string, data *Session
s.backendUrl = hello.Auth.Url s.backendUrl = hello.Auth.Url
s.parsedBackendUrl = hello.Auth.parsedUrl 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 { if err := s.SubscribeNats(hub.nats); err != nil {
return nil, err return nil, err
} }

View file

@ -29,6 +29,7 @@ import (
"net/http/httptest" "net/http/httptest"
"net/url" "net/url"
"reflect" "reflect"
"strings"
"sync" "sync"
"sync/atomic" "sync/atomic"
"testing" "testing"
@ -291,7 +292,10 @@ func registerBackendHandlerUrl(t *testing.T, router *mux.Router, url string) {
}) })
router.HandleFunc(url, handleFunc) 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 { func performHousekeeping(hub *Hub, now time.Time) *sync.WaitGroup {