Changeset 378 in code


Ignore:
Timestamp:
Aug 10, 2020, 1:03:38 PM (5 years ago)
Author:
contact
Message:

Remove user from Server map when stopped

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r370 r378  
    8080
    8181        s.lock.Lock()
    82         for _, record := range users {
    83                 s.Logger.Printf("starting bouncer for user %q", record.Username)
    84                 u := newUser(s, &record)
    85                 s.users[u.Username] = u
    86 
    87                 go u.run()
     82        for i := range users {
     83                s.addUserLocked(&users[i])
    8884        }
    8985        s.lock.Unlock()
     
    105101        }
    106102
    107         s.Logger.Printf("starting bouncer for new user %q", user.Username)
    108         u := newUser(s, user)
    109         s.users[u.Username] = u
    110         go u.run()
    111         return u, nil
     103        return s.addUserLocked(user), nil
    112104}
    113105
     
    116108        u := s.users[name]
    117109        s.lock.Unlock()
     110        return u
     111}
     112
     113func (s *Server) addUserLocked(user *User) *user {
     114        s.Logger.Printf("starting bouncer for user %q", user.Username)
     115        u := newUser(s, user)
     116        s.users[u.Username] = u
     117
     118        go func() {
     119                u.run()
     120
     121                s.lock.Lock()
     122                delete(s.users, u.Username)
     123                s.lock.Unlock()
     124        }()
     125
    118126        return u
    119127}
Note: See TracChangeset for help on using the changeset viewer.