Removes locks causing deadlock

This commit removes most of the locks in the PollingMap handler as there
was combinations that caused deadlocks. Instead of doing a plain map and
doing the locking ourselves, we use sync.Map which handles it for us.
This commit is contained in:
Kristoffer Dalby 2021-08-05 22:14:37 +01:00
parent 575b15e5fa
commit 1abc68ccf4
4 changed files with 9 additions and 18 deletions

3
app.go
View file

@ -59,7 +59,7 @@ type Headscale struct {
aclRules *[]tailcfg.FilterRule
pollMu sync.Mutex
clientsPolling map[uint64]chan []byte // this is by all means a hackity hack
clientsPolling sync.Map
}
// NewHeadscale returns the Headscale app
@ -99,7 +99,6 @@ func NewHeadscale(cfg Config) (*Headscale, error) {
return nil, err
}
h.clientsPolling = make(map[uint64]chan []byte)
return &h, nil
}