mirror of https://github.com/cbeuw/Cloak
Remove conns from map once switchboard.CloseAll is called
This commit is contained in:
parent
8b99e419b3
commit
bbb0d35e80
|
|
@ -100,14 +100,10 @@ func (sb *switchboard) send(data []byte, connId *uint32) (n int, err error) {
|
||||||
return 0, errBrokenSwitchboard
|
return 0, errBrokenSwitchboard
|
||||||
}
|
}
|
||||||
newConnId := rand.Intn(len(sb.conns))
|
newConnId := rand.Intn(len(sb.conns))
|
||||||
conn, ok = sb.conns[uint32(newConnId)]
|
conn, _ = sb.conns[uint32(newConnId)]
|
||||||
if !ok {
|
n, err = conn.Write(data)
|
||||||
return 0, errBrokenSwitchboard
|
sb.AddTx(int64(n))
|
||||||
} else {
|
return
|
||||||
n, err = conn.Write(data)
|
|
||||||
sb.AddTx(int64(n))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -125,14 +121,14 @@ func (sb *switchboard) assignRandomConn() (uint32, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// actively triggered by session.Close()
|
// actively triggered by session.Close()
|
||||||
// TODO: closeALl needs to clear the conns map
|
|
||||||
func (sb *switchboard) closeAll() {
|
func (sb *switchboard) closeAll() {
|
||||||
if atomic.SwapUint32(&sb.broken, 1) == 1 {
|
if atomic.SwapUint32(&sb.broken, 1) == 1 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
sb.connsM.RLock()
|
sb.connsM.RLock()
|
||||||
for _, conn := range sb.conns {
|
for key, conn := range sb.conns {
|
||||||
conn.Close()
|
conn.Close()
|
||||||
|
delete(sb.conns, key)
|
||||||
}
|
}
|
||||||
sb.connsM.RUnlock()
|
sb.connsM.RUnlock()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue