fix stop frps crashed
This commit is contained in:
parent
05e71a13f2
commit
82b0a4053a
@ -23,7 +23,6 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sort"
|
"sort"
|
||||||
"reflect"
|
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -331,25 +330,24 @@ func (svr *Service) Run() {
|
|||||||
svr.HandleListener(svr.listener)
|
svr.HandleListener(svr.listener)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func closeListener(listeners ...net.Listener) (err error) {
|
||||||
|
for _, l := range listeners {
|
||||||
|
if l == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = l.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Stop 停止服务
|
// Stop 停止服务
|
||||||
func (svr *Service) Stop() error {
|
func (svr *Service) Stop() (err error) {
|
||||||
var err error
|
if err = closeListener(svr.listener, svr.kcpListener, svr.websocketListener, svr.listener); err != nil {
|
||||||
value := reflect.ValueOf(svr.muxer)
|
return err
|
||||||
lnValue := value.Elem().FieldByName("ln")
|
|
||||||
ln, ok := lnValue.Interface().(net.Listener)
|
|
||||||
if ok && ln != nil {
|
|
||||||
err = ln.Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
if svr.listener != nil {
|
|
||||||
_ = svr.listener.Close()
|
|
||||||
}
|
|
||||||
if svr.websocketListener != nil {
|
|
||||||
_ = svr.websocketListener.Close()
|
|
||||||
}
|
|
||||||
if svr.kcpListener != nil {
|
|
||||||
_ = svr.kcpListener.Close()
|
|
||||||
}
|
}
|
||||||
close(svr.closedCh)
|
close(svr.closedCh)
|
||||||
svr.Closed = true
|
svr.Closed = true
|
||||||
|
Loading…
Reference in New Issue
Block a user