Make user.stop block
This allows callers to wait until the user has been stopped.
This commit is contained in:
parent
ef01142a44
commit
6baa15ba14
5
user.go
5
user.go
@ -219,6 +219,7 @@ type user struct {
|
|||||||
srv *Server
|
srv *Server
|
||||||
|
|
||||||
events chan event
|
events chan event
|
||||||
|
done chan struct{}
|
||||||
|
|
||||||
networks []*network
|
networks []*network
|
||||||
downstreamConns []*downstreamConn
|
downstreamConns []*downstreamConn
|
||||||
@ -238,6 +239,7 @@ func newUser(srv *Server, record *User) *user {
|
|||||||
User: *record,
|
User: *record,
|
||||||
srv: srv,
|
srv: srv,
|
||||||
events: make(chan event, 64),
|
events: make(chan event, 64),
|
||||||
|
done: make(chan struct{}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,6 +286,8 @@ func (u *user) getNetworkByID(id int64) *network {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (u *user) run() {
|
func (u *user) run() {
|
||||||
|
defer close(u.done)
|
||||||
|
|
||||||
networks, err := u.srv.db.ListNetworks(u.Username)
|
networks, err := u.srv.db.ListNetworks(u.Username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
u.srv.Logger.Printf("failed to list networks for user %q: %v", u.Username, err)
|
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() {
|
func (u *user) stop() {
|
||||||
u.events <- eventStop{}
|
u.events <- eventStop{}
|
||||||
|
<-u.done
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user