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"
"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
}

View File

@ -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 {