platform: Add oom killer

This commit is contained in:
世界
2023-03-16 10:55:06 +08:00
parent 2cb0e37f50
commit cc9cb0b477
6 changed files with 80 additions and 33 deletions

View File

@@ -1,29 +1,32 @@
package conntrack
import (
"io"
"net"
"runtime/debug"
"github.com/sagernet/sing/common/x/list"
)
type PacketConn struct {
net.PacketConn
element *list.Element[*ConnEntry]
element *list.Element[io.Closer]
}
func NewPacketConn(conn net.PacketConn) *PacketConn {
entry := &ConnEntry{
Conn: conn,
Stack: debug.Stack(),
}
func NewPacketConn(conn net.PacketConn) (*PacketConn, error) {
connAccess.Lock()
element := openConnection.PushBack(entry)
element := openConnection.PushBack(conn)
connAccess.Unlock()
if KillerEnabled {
err := killerCheck()
if err != nil {
conn.Close()
return nil, err
}
}
return &PacketConn{
PacketConn: conn,
element: element,
}
}, nil
}
func (c *PacketConn) Close() error {