From c635b5db59a0996acbc67d8c04368a2ca1b2ec20 Mon Sep 17 00:00:00 2001 From: Simon Eisenmann Date: Fri, 11 Jul 2014 18:11:09 +0200 Subject: [PATCH] Create only one fake session per userid, --- src/app/spreed-webrtc-server/hub.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/app/spreed-webrtc-server/hub.go b/src/app/spreed-webrtc-server/hub.go index 8ded010e..f8d75546 100644 --- a/src/app/spreed-webrtc-server/hub.go +++ b/src/app/spreed-webrtc-server/hub.go @@ -74,6 +74,7 @@ type Hub struct { sessionTable map[string]*Session roomTable map[string]*RoomWorker userTable map[string]*User + fakesessionTable map[string]*Session version string config *Config sessionSecret []byte @@ -100,6 +101,7 @@ func NewHub(version string, config *Config, sessionSecret, encryptionSecret, tur sessionTable: make(map[string]*Session), roomTable: make(map[string]*RoomWorker), userTable: make(map[string]*User), + fakesessionTable: make(map[string]*Session), version: version, config: config, sessionSecret: sessionSecret, @@ -237,11 +239,17 @@ func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session { func (h *Hub) CreateFakeSession(userid string) *Session { - sid := fmt.Sprintf("fake-%s", NewRandomString(27)) - id, _ := h.tickets.Encode("id", sid) - log.Println("Created new fake session id", id) - session := NewSession(h, id, sid) - session.SetUseridFake(userid) + h.mutex.Lock() + session, ok := h.fakesessionTable[userid] + if !ok { + sid := fmt.Sprintf("fake-%s", NewRandomString(27)) + id, _ := h.tickets.Encode("id", sid) + log.Println("Created new fake session id", id) + session = NewSession(h, id, sid) + session.SetUseridFake(userid) + h.fakesessionTable[userid] = session + } + h.mutex.Unlock() return session }