diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/server/server.go | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/server/server/server.go b/server/server/server.go index 7765887..eb0eec2 100644 --- a/server/server/server.go +++ b/server/server/server.go @@ -53,7 +53,7 @@ func (s *server) onDisconnect(sesh *session.Session) { if sesh.UserId != "" { u := s.world.GetObject(sesh.UserId).(*user.User) if u.IsAnonymous() { - s.deleteAnonUsers() + s.deleteAnonUser(u) } } for st, _ := range sesh.Subscriptions() { @@ -61,7 +61,15 @@ func (s *server) onDisconnect(sesh *session.Session) { } } -func (s *server) deleteAnonUsers() { +func (s *server) deleteAnonUser(u *user.User) { + for cid := range s.channelKind.UserChannels(u.Id()) { + m := channel.Membership {Yes: false} + s.world.GetObject(cid).(*channel.Channel).SetMembership(u.Id(), m) + } + u.Delete() +} + +func (s *server) deleteAllAnon() { var anon []string err := s.world.DB().View(func(tx *bolt.Tx) error { bucket := tx.Bucket([]byte("anonymous users")) @@ -80,11 +88,7 @@ func (s *server) deleteAnonUsers() { for _, id := range anon { switch u := s.world.GetObject(id).(type) { case *user.User: - for cid := range s.channelKind.UserChannels(u.Id()) { - m := channel.Membership {Yes: false} - s.world.GetObject(cid).(*channel.Channel).SetMembership(id, m) - } - u.Delete() + s.deleteAnonUser(u) } } } @@ -108,7 +112,7 @@ func Serve(db *bolt.DB, ln net.Listener) { srv.world.PutObject("", &srv) - srv.deleteAnonUsers() + srv.deleteAllAnon() go func() { for { |
