mirror of
https://github.com/strukturag/nextcloud-spreed-signaling
synced 2024-05-23 16:02:12 +02:00
Pass backend when fetching room for managing virtual sessions.
The internal room id is different depending on the backend.
This commit is contained in:
parent
d21ace3114
commit
a5faca00cd
19
hub.go
19
hub.go
|
@ -1074,19 +1074,6 @@ func (h *Hub) getRoomForBackend(id string, backend *Backend) *Room {
|
||||||
return h.rooms[internalRoomId]
|
return h.rooms[internalRoomId]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Hub) getRoom(id string) *Room {
|
|
||||||
h.ru.RLock()
|
|
||||||
defer h.ru.RUnlock()
|
|
||||||
// TODO: The same room might exist on different backends.
|
|
||||||
for _, room := range h.rooms {
|
|
||||||
if room.Id() == id {
|
|
||||||
return room
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *Hub) removeRoom(room *Room) {
|
func (h *Hub) removeRoom(room *Room) {
|
||||||
internalRoomId := getRoomIdForBackend(room.Id(), room.Backend())
|
internalRoomId := getRoomIdForBackend(room.Id(), room.Backend())
|
||||||
h.ru.Lock()
|
h.ru.Lock()
|
||||||
|
@ -1463,7 +1450,7 @@ func (h *Hub) processInternalMsg(client *Client, message *ClientMessage) {
|
||||||
switch msg.Type {
|
switch msg.Type {
|
||||||
case "addsession":
|
case "addsession":
|
||||||
msg := msg.AddSession
|
msg := msg.AddSession
|
||||||
room := h.getRoom(msg.RoomId)
|
room := h.getRoomForBackend(msg.RoomId, session.Backend())
|
||||||
if room == nil {
|
if room == nil {
|
||||||
log.Printf("Ignore add session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
log.Printf("Ignore add session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
||||||
return
|
return
|
||||||
|
@ -1528,7 +1515,7 @@ func (h *Hub) processInternalMsg(client *Client, message *ClientMessage) {
|
||||||
room.AddSession(sess, nil)
|
room.AddSession(sess, nil)
|
||||||
case "updatesession":
|
case "updatesession":
|
||||||
msg := msg.UpdateSession
|
msg := msg.UpdateSession
|
||||||
room := h.getRoom(msg.RoomId)
|
room := h.getRoomForBackend(msg.RoomId, session.Backend())
|
||||||
if room == nil {
|
if room == nil {
|
||||||
log.Printf("Ignore remove session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
log.Printf("Ignore remove session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
||||||
return
|
return
|
||||||
|
@ -1561,7 +1548,7 @@ func (h *Hub) processInternalMsg(client *Client, message *ClientMessage) {
|
||||||
}
|
}
|
||||||
case "removesession":
|
case "removesession":
|
||||||
msg := msg.RemoveSession
|
msg := msg.RemoveSession
|
||||||
room := h.getRoom(msg.RoomId)
|
room := h.getRoomForBackend(msg.RoomId, session.Backend())
|
||||||
if room == nil {
|
if room == nil {
|
||||||
log.Printf("Ignore remove session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
log.Printf("Ignore remove session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
||||||
return
|
return
|
||||||
|
|
14
hub_test.go
14
hub_test.go
|
@ -47,6 +47,20 @@ const (
|
||||||
testTimeout = 10 * time.Second
|
testTimeout = 10 * time.Second
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Only used for testing.
|
||||||
|
func (h *Hub) getRoom(id string) *Room {
|
||||||
|
h.ru.RLock()
|
||||||
|
defer h.ru.RUnlock()
|
||||||
|
// TODO: The same room might exist on different backends.
|
||||||
|
for _, room := range h.rooms {
|
||||||
|
if room.Id() == id {
|
||||||
|
return room
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func getTestConfig(server *httptest.Server) (*goconf.ConfigFile, error) {
|
func getTestConfig(server *httptest.Server) (*goconf.ConfigFile, error) {
|
||||||
config := goconf.NewConfigFile()
|
config := goconf.NewConfigFile()
|
||||||
u, err := url.Parse(server.URL)
|
u, err := url.Parse(server.URL)
|
||||||
|
|
Loading…
Reference in a new issue