summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/server/server.go20
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 {