server: allow to call server.Close() twice

This commit is contained in:
aler9
2021-05-09 14:10:21 +02:00
parent 1b9b19dd84
commit 994cd442e3
4 changed files with 38 additions and 22 deletions

View File

@@ -63,7 +63,7 @@ type ServerConn struct {
// in
sessionRemove chan *ServerSession
innerTerminate chan struct{}
terminate chan struct{}
parentTerminate chan struct{}
}
@@ -77,7 +77,7 @@ func newServerConn(
wg: wg,
nconn: nconn,
sessionRemove: make(chan *ServerSession),
innerTerminate: make(chan struct{}, 1),
terminate: make(chan struct{}, 1),
parentTerminate: make(chan struct{}),
}
@@ -90,7 +90,7 @@ func newServerConn(
// Close closes the ServerConn.
func (sc *ServerConn) Close() error {
select {
case sc.innerTerminate <- struct{}{}:
case sc.terminate <- struct{}{}:
default:
}
return nil
@@ -214,7 +214,7 @@ func (sc *ServerConn) run() {
sc.sessionsWG.Done()
}
case <-sc.innerTerminate:
case <-sc.terminate:
return liberrors.ErrServerTerminated{}
}
}