diff --git a/net/net_linux.go b/net/net_linux.go index 0042c00..8905b13 100644 --- a/net/net_linux.go +++ b/net/net_linux.go @@ -281,7 +281,6 @@ type connTmp struct { laddr Addr raddr Addr status string - uids []int32 pid int32 boundPid int32 path string @@ -347,7 +346,7 @@ func ConnectionsPidMax(kind string, pid int32, max int) ([]ConnectionStat, error } func statsFromInodes(root string, pid int32, tmap []netConnectionKindType, inodes map[string][]inodeMap) ([]ConnectionStat, error) { - dupCheckMap := make(map[string]bool) + dupCheckMap := make(map[connTmp]struct{}) var ret []ConnectionStat var err error @@ -367,13 +366,16 @@ func statsFromInodes(root string, pid int32, tmap []netConnectionKindType, inode return nil, err } for _, c := range ls { + if _, ok := dupCheckMap[c]; ok { + continue + } + conn := ConnectionStat{ Fd: c.fd, Family: c.family, Type: c.sockType, Laddr: c.laddr, Raddr: c.raddr, - Uids: c.uids, Status: c.status, Pid: c.pid, } @@ -387,13 +389,8 @@ func statsFromInodes(root string, pid int32, tmap []netConnectionKindType, inode proc := process{Pid: conn.Pid} conn.Uids, _ = proc.getUids() - // check duplicate using JSON format - json := conn.String() - _, exists := dupCheckMap[json] - if !exists { - ret = append(ret, conn) - dupCheckMap[json] = true - } + ret = append(ret, conn) + dupCheckMap[c] = struct{}{} } }