close wait channel in all cases, not just success

This commit is contained in:
Jeromy 2016-05-14 23:43:45 -07:00
parent ea5428f97e
commit 6dc5e19c54
1 changed files with 5 additions and 4 deletions

View File

@ -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) {