Unverified Commit 87780d79 authored by Massimiliano Pippi's avatar Massimiliano Pippi Committed by GitHub

Sync board list to avoid race conditions (#308)

* sync board list to avoid race conditions

* properly unlock mutex
parent a6fdfea5
......@@ -23,6 +23,7 @@ import (
"io"
"os/exec"
"strings"
"sync"
"time"
"github.com/arduino/arduino-cli/arduino/cores"
......@@ -33,6 +34,7 @@ import (
// Discovery is an instance of a discovery tool
type Discovery struct {
sync.Mutex
ID string
in io.WriteCloser
out io.ReadCloser
......@@ -88,6 +90,11 @@ func (d *Discovery) Start() error {
// List retrieve the port list from this discovery
func (d *Discovery) List() ([]*BoardPort, error) {
// ensure the connection to the discoverer is unique to avoid messing up
// the messages exchanged
d.Lock()
defer d.Unlock()
if _, err := d.in.Write([]byte("LIST\n")); err != nil {
return nil, fmt.Errorf("sending LIST command to discovery: %s", err)
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment