From 598b3ce5ad912d8117394d3c4c7155d3490f2a1e Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Wed, 3 Feb 2021 17:49:12 +0000 Subject: [PATCH] Port mutex --- build/gobind-pinecone/monolith.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/build/gobind-pinecone/monolith.go b/build/gobind-pinecone/monolith.go index aee396e2e..a000fabe5 100644 --- a/build/gobind-pinecone/monolith.go +++ b/build/gobind-pinecone/monolith.go @@ -14,6 +14,7 @@ import ( "net" "net/http" "os" + "sync" "time" "github.com/gorilla/mux" @@ -107,6 +108,8 @@ func (m *DendriteMonolith) Conduit(zone string) (*Conduit, error) { l, r := net.Pipe() conduit := &Conduit{conn: r, port: 0} go func() { + conduit.portMutex.Lock() + defer conduit.portMutex.Unlock() loop: for i := 1; i <= 10; i++ { logrus.Errorf("Attempting authenticated connect (attempt %d)", i) @@ -365,11 +368,14 @@ func (m *DendriteMonolith) Suspend() { } type Conduit struct { - conn net.Conn - port types.SwitchPortID + conn net.Conn + port types.SwitchPortID + portMutex sync.Mutex } func (c *Conduit) Port() int { + c.portMutex.Lock() + defer c.portMutex.Unlock() return int(c.port) }