close wait channel in all cases, not just success
This commit is contained in:
parent
ea5428f97e
commit
6dc5e19c54
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue