Make user.stop block

This allows callers to wait until the user has been stopped.

git-svn-id: file:///srv/svn/repo/suika/trunk@377 f0ae65fe-ee39-954e-97ec-027ff2717ef4
This commit is contained in:
contact 2020-08-10 13:03:38 +00:00
parent 1869b37956
commit 25dc76452b

View File

@ -219,6 +219,7 @@ type user struct {
srv *Server
events chan event
done chan struct{}
networks []*network
downstreamConns []*downstreamConn
@ -238,6 +239,7 @@ func newUser(srv *Server, record *User) *user {
User: *record,
srv: srv,
events: make(chan event, 64),
done: make(chan struct{}),
}
}
@ -284,6 +286,8 @@ func (u *user) getNetworkByID(id int64) *network {
}
func (u *user) run() {
defer close(u.done)
networks, err := u.srv.db.ListNetworks(u.Username)
if err != nil {
u.srv.Logger.Printf("failed to list networks for user %q: %v", u.Username, err)
@ -563,4 +567,5 @@ func (u *user) updatePassword(hashed string) error {
func (u *user) stop() {
u.events <- eventStop{}
<-u.done
}