Fix deadlock when reconfiguring multicast

This commit is contained in:
Neil Alexander 2019-03-04 23:16:46 +00:00
parent 88925d3e06
commit 2ef823e69c
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
2 changed files with 11 additions and 6 deletions

View file

@ -76,14 +76,17 @@ func (l *link) init(c *Core) error {
go func() {
for {
e := <-l.reconfigure
response := make(chan error)
l.tcp.reconfigure <- response
if err := <-response; err != nil {
tcpresponse := make(chan error)
awdlresponse := make(chan error)
l.tcp.reconfigure <- tcpresponse
if err := <-tcpresponse; err != nil {
e <- err
continue
}
l.awdl.reconfigure <- response
if err := <-response; err != nil {
l.awdl.reconfigure <- awdlresponse
if err := <-awdlresponse; err != nil {
e <- err
continue
}
e <- nil
}