diff --git a/cmd/kubevpn/cmds/daemon.go b/cmd/kubevpn/cmds/daemon.go index 31898cc3..e0288e00 100644 --- a/cmd/kubevpn/cmds/daemon.go +++ b/cmd/kubevpn/cmds/daemon.go @@ -37,7 +37,8 @@ func CmdDaemon(cmdutil.Factory) *cobra.Command { go util.StartupPProf(config.SudoPProfPort) _ = os.RemoveAll("/etc/resolver") _ = dns.CleanupHosts() - _ = util.CleanupTempKubeConfigFile() + // no delete temp kubeconfig because maybe recover from DB + //_ = util.CleanupTempKubeConfigFile() } else { go util.StartupPProf(config.PProfPort) } diff --git a/pkg/core/bufferedtcp.go b/pkg/core/bufferedtcp.go index 1e904e3a..1bcababc 100644 --- a/pkg/core/bufferedtcp.go +++ b/pkg/core/bufferedtcp.go @@ -62,5 +62,13 @@ func (c *bufferedTCP) Run(ctx context.Context) { func (c *bufferedTCP) Close() error { c.closed = true - return c.Conn.Close() + for { + var buf *DatagramPacket + select { + case buf = <-c.Chan: + config.LPool.Put(buf.Data[:]) + default: + return c.Conn.Close() + } + } } diff --git a/pkg/core/gvisortunendpoint.go b/pkg/core/gvisortunendpoint.go index 2774b3ba..18159a94 100755 --- a/pkg/core/gvisortunendpoint.go +++ b/pkg/core/gvisortunendpoint.go @@ -41,6 +41,7 @@ func (h *gvisorTCPHandler) readFromEndpointWriteToTCPConn(ctx context.Context, c // tun --> dispatcher func (h *gvisorTCPHandler) readFromTCPConnWriteToEndpoint(ctx context.Context, conn net.Conn, endpoint *channel.Endpoint) { tcpConn, _ := newGvisorUDPConnOverTCP(ctx, conn) + defer tcpConn.Close() defer h.removeFromRouteMapTCP(ctx, conn) for ctx.Err() == nil {