@@ -111,10 +111,9 @@ func Serve(
111111 receivetype : receivetype ,
112112 }
113113
114- closer := make (chan interface {}, 1 )
115114 log .Info ("Listening on %s" , addr )
116115 serverCircuit .Close ()
117- srv .listen (listener , cfg , closer )
116+ srv .listen (listener , cfg )
118117
119118 return nil
120119}
@@ -128,23 +127,16 @@ type server struct {
128127
129128// listen handles accepting and managing connections. However, since closer
130129// is len(1), it will not block the sender.
131- func (s * server ) listen (l net.Listener , conf * ssh.ServerConfig , closer chan interface {} ) error {
130+ func (s * server ) listen (l net.Listener , conf * ssh.ServerConfig ) error {
132131
133132 log .Info ("Accepting new connections." )
134133 defer l .Close ()
135134
136- // FIXME: Since Accept blocks, closer may not be checked often enough.
137135 for {
138- log .Info ("Checking closer." )
139- if len (closer ) > 0 {
140- <- closer
141- log .Info ("Shutting down SSHD listener." )
142- return nil
143- }
144136 conn , err := l .Accept ()
145137 if err != nil {
146138 log .Err ("Error during Accept: %s" , err )
147- // We shouldn't kill the listener because of an error.
139+ // We shut down the listener if Accept errors
148140 return err
149141 }
150142 go s .handleConn (conn , conf )
0 commit comments