wgengine/wgcfg: prevent ReconfigDevice from hanging on error

When wireguard-go's UAPI interface fails with an error, ReconfigDevice hangs.
Fix that by buffering the channel and closing the writer after the call.
The code now matches the corresponding code in DeviceConfig, where I got it right.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
pull/1874/head
Josh Bleecher Snyder 3 years ago
parent 462f7e38fc
commit 1f6c4ba7c3

@ -47,9 +47,10 @@ func ReconfigDevice(d *device.Device, cfg *Config, logf logger.Logf) (err error)
}
r, w := io.Pipe()
errc := make(chan error)
errc := make(chan error, 1)
go func() {
errc <- d.IpcSetOperation(r)
w.Close()
}()
err = cfg.ToUAPI(w, prev)

Loading…
Cancel
Save