mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-10-23 15:23:13 +08:00
38 lines
537 B
Go
38 lines
537 B
Go
package core
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type Server struct {
|
|
Listener net.Listener
|
|
Handler Handler
|
|
}
|
|
|
|
// Serve serves as a proxy server.
|
|
func (s *Server) Serve(ctx context.Context) error {
|
|
l := s.Listener
|
|
defer l.Close()
|
|
//go func() {
|
|
// <-ctx.Done()
|
|
// l.Close()
|
|
//}()
|
|
for {
|
|
select {
|
|
case <-ctx.Done():
|
|
return nil
|
|
default:
|
|
conn, err := l.Accept()
|
|
if err != nil {
|
|
log.Warnf("server: accept error: %v", err)
|
|
continue
|
|
}
|
|
go s.Handler.Handle(ctx, conn)
|
|
}
|
|
|
|
}
|
|
}
|