diff --git a/transport/internet/ws/stopablehttplistener.go b/transport/internet/ws/stopablehttplistener.go index 2523caedc..99ff3a24b 100644 --- a/transport/internet/ws/stopablehttplistener.go +++ b/transport/internet/ws/stopablehttplistener.go @@ -6,54 +6,24 @@ import ( ) type StoppableListener struct { - net.Listener //Wrapped listener - stop chan int //Channel used only to indicate listener should shutdown + net.Listener //Wrapped listener } func NewStoppableListener(l net.Listener) (*StoppableListener, error) { - /* - tcpL, ok := l.(*net.TCPListener) - if !ok { - return nil, errors.New("Cannot wrap listener") - } - */ retval := &StoppableListener{} retval.Listener = l - retval.stop = make(chan int) - return retval, nil } var StoppedError = errors.New("Listener stopped") func (sl *StoppableListener) Accept() (net.Conn, error) { + newConn, err := sl.Listener.Accept() + return newConn, err - for { - newConn, err := sl.Listener.Accept() - - //Check for the channel being closed - select { - case <-sl.stop: - return nil, StoppedError - default: - //If the channel is still open, continue as normal - } - - if err != nil { - netErr, ok := err.(net.Error) - - //If this is a timeout, then continue to wait for - //new connections - if ok && netErr.Timeout() && netErr.Temporary() { - continue - } - } - - return newConn, err - } } func (sl *StoppableListener) Stop() { - close(sl.stop) + sl.Listener.Close() }