Commit e9edd9bd authored by Jeromy Johnson's avatar Jeromy Johnson
Browse files

Merge pull request #49 from ipfs/fix/id-hang

close wait channel in all cases, not just success
parents ea5428f9 6dc5e19c
...@@ -72,9 +72,12 @@ func (ids *IDService) IdentifyConn(c inet.Conn) { ...@@ -72,9 +72,12 @@ func (ids *IDService) IdentifyConn(c inet.Conn) {
<-wait // already identifying it. wait for it. <-wait // already identifying it. wait for it.
return return
} }
ids.currid[c] = make(chan struct{}) ch := make(chan struct{})
ids.currid[c] = ch
ids.currmu.Unlock() ids.currmu.Unlock()
defer close(ch)
s, err := c.NewStream() s, err := c.NewStream()
if err != nil { if err != nil {
log.Debugf("error opening initial stream for %s: %s", ID, err) log.Debugf("error opening initial stream for %s: %s", ID, err)
...@@ -97,7 +100,7 @@ func (ids *IDService) IdentifyConn(c inet.Conn) { ...@@ -97,7 +100,7 @@ func (ids *IDService) IdentifyConn(c inet.Conn) {
ids.ResponseHandler(s) ids.ResponseHandler(s)
ids.currmu.Lock() ids.currmu.Lock()
ch, found := ids.currid[c] _, found := ids.currid[c]
delete(ids.currid, c) delete(ids.currid, c)
ids.currmu.Unlock() ids.currmu.Unlock()
...@@ -105,8 +108,6 @@ func (ids *IDService) IdentifyConn(c inet.Conn) { ...@@ -105,8 +108,6 @@ func (ids *IDService) IdentifyConn(c inet.Conn) {
log.Debugf("IdentifyConn failed to find channel (programmer error) for %s", c) log.Debugf("IdentifyConn failed to find channel (programmer error) for %s", c)
return return
} }
close(ch) // release everyone waiting.
} }
func (ids *IDService) RequestHandler(s inet.Stream) { func (ids *IDService) RequestHandler(s inet.Stream) {
......
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