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