summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraven <citrons@mondecitronne.com>2026-02-11 13:25:25 -0600
committerraven <citrons@mondecitronne.com>2026-02-11 13:25:25 -0600
commit3f2993524638653b4050b9a20fb7b4bca750fe84 (patch)
tree5e5a556a45c80cb53671c328ab8882816fef4d67
parent2abb14ab294380b853c19eae2674294c4eb68985 (diff)
fix spurious deletion of non-logged-in users
-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 {