tun2: move pingloop into a function
This commit is contained in:
parent
1c221cdf6d
commit
03f9570151
|
@ -156,52 +156,56 @@ func (s *Server) ListenAndServe() error {
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
|
s.pingLoopInner()
|
||||||
s.connlock.Lock()
|
|
||||||
|
|
||||||
for _, c := range s.conns {
|
|
||||||
c.session.SetDeadline(time.Now().Add(time.Second))
|
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", "http://backend/health", nil)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
stream, err := c.session.OpenStream()
|
|
||||||
if err != nil {
|
|
||||||
ln.Error(err, c.F())
|
|
||||||
c.cancel()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
err = req.Write(stream)
|
|
||||||
if err != nil {
|
|
||||||
ln.Error(err, c.F())
|
|
||||||
c.cancel()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = stream.Read(make([]byte, 30))
|
|
||||||
if err != nil {
|
|
||||||
ln.Error(err, c.F())
|
|
||||||
c.cancel()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
stream.Close()
|
|
||||||
|
|
||||||
ln.Log(ln.F{
|
|
||||||
"action": "ping_health_is_good",
|
|
||||||
}, c.F())
|
|
||||||
}
|
|
||||||
|
|
||||||
s.connlock.Unlock()
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Server) pingLoopInner() {
|
||||||
|
s.connlock.Lock()
|
||||||
|
defer s.connlock.Unlock()
|
||||||
|
|
||||||
|
for _, c := range s.conns {
|
||||||
|
c.session.SetDeadline(time.Now().Add(time.Second))
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", "http://backend/health", nil)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
stream, err := c.session.OpenStream()
|
||||||
|
if err != nil {
|
||||||
|
ln.Error(err, c.F())
|
||||||
|
c.cancel()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = req.Write(stream)
|
||||||
|
if err != nil {
|
||||||
|
ln.Error(err, c.F())
|
||||||
|
c.cancel()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = stream.Read(make([]byte, 30))
|
||||||
|
if err != nil {
|
||||||
|
ln.Error(err, c.F())
|
||||||
|
c.cancel()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
stream.Close()
|
||||||
|
|
||||||
|
/*
|
||||||
|
ln.Log(ln.F{
|
||||||
|
"action": "ping_health_is_good",
|
||||||
|
}, c.F())
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Server) HandleConn(c net.Conn, isKCP bool) {
|
func (s *Server) HandleConn(c net.Conn, isKCP bool) {
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
@ -381,7 +385,7 @@ func (s *Server) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
Request: req,
|
Request: req,
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp, nil
|
return resp, errors.New("no backend connected")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue