From c8cd1320c74f9e7f42767f44b177da18edae301c Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Mon, 15 Aug 2016 18:17:29 +0800 Subject: [PATCH] Use stopable listener for HTTP --- transport/internet/ws/hub.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/transport/internet/ws/hub.go b/transport/internet/ws/hub.go index 16fd3df77..a85e320e3 100644 --- a/transport/internet/ws/hub.go +++ b/transport/internet/ws/hub.go @@ -27,6 +27,7 @@ type WSListener struct { sync.Mutex acccepting bool awaitingConns chan *ConnectionWithError + listener *StoppableListener } func ListenWS(address v2net.Address, port v2net.Port) (internet.Listener, error) { @@ -69,7 +70,15 @@ func (wsl *WSListener) listenws(address v2net.Address, port v2net.Port) error { errchan := make(chan error) listenerfunc := func() error { - return http.ListenAndServe(address.String()+":"+strconv.Itoa(int(port.Value())), nil) + ol, err := net.Listen("tcp", address.String()+":"+strconv.Itoa(int(port.Value()))) + if err != nil { + return err + } + wsl.listener, err = NewStoppableListener(ol) + if err != nil { + return err + } + return http.Serve(wsl.listener, nil) } if effectiveConfig.Pto == "wss" {