From 900c1fbfa268265cabfeb685d512e14c58d21f26 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Wed, 24 Dec 2014 03:38:44 -0800 Subject: [PATCH] net/id: when dup id, wait on it. --- net/id.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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()