mirror of
https://github.com/strukturag/nextcloud-spreed-signaling
synced 2024-05-13 11:06:33 +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]
|
||||
}
|
||||
|
||||
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) {
|
||||
internalRoomId := getRoomIdForBackend(room.Id(), room.Backend())
|
||||
h.ru.Lock()
|
||||
|
@ -1463,7 +1450,7 @@ func (h *Hub) processInternalMsg(client *Client, message *ClientMessage) {
|
|||
switch msg.Type {
|
||||
case "addsession":
|
||||
msg := msg.AddSession
|
||||
room := h.getRoom(msg.RoomId)
|
||||
room := h.getRoomForBackend(msg.RoomId, session.Backend())
|
||||
if room == nil {
|
||||
log.Printf("Ignore add session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
||||
return
|
||||
|
@ -1528,7 +1515,7 @@ func (h *Hub) processInternalMsg(client *Client, message *ClientMessage) {
|
|||
room.AddSession(sess, nil)
|
||||
case "updatesession":
|
||||
msg := msg.UpdateSession
|
||||
room := h.getRoom(msg.RoomId)
|
||||
room := h.getRoomForBackend(msg.RoomId, session.Backend())
|
||||
if room == nil {
|
||||
log.Printf("Ignore remove session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
||||
return
|
||||
|
@ -1561,7 +1548,7 @@ func (h *Hub) processInternalMsg(client *Client, message *ClientMessage) {
|
|||
}
|
||||
case "removesession":
|
||||
msg := msg.RemoveSession
|
||||
room := h.getRoom(msg.RoomId)
|
||||
room := h.getRoomForBackend(msg.RoomId, session.Backend())
|
||||
if room == nil {
|
||||
log.Printf("Ignore remove session message %+v for invalid room %s from %s", *msg, msg.RoomId, session.PublicId())
|
||||
return
|
||||
|
|
14
hub_test.go
14
hub_test.go
|
@ -47,6 +47,20 @@ const (
|
|||
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) {
|
||||
config := goconf.NewConfigFile()
|
||||
u, err := url.Parse(server.URL)
|
||||
|
|
Loading…
Reference in a new issue