diff --git a/net/id.go b/net/id.go index 17dc76610..92a3b684d 100644 --- a/net/id.go +++ b/net/id.go @@ -38,10 +38,11 @@ func NewIDService(n Network) *IDService { func (ids *IDService) IdentifyConn(c Conn) { ids.currmu.Lock() - if _, found := ids.currid[c]; found { + if wait, found := ids.currid[c]; found { ids.currmu.Unlock() log.Debugf("IdentifyConn called twice on: %s", c) - return // already identifying it. + <-wait // already identifying it. wait for it. + return } ids.currid[c] = make(chan struct{}) ids.currmu.Unlock()