Skip to content

Commit 5803469

Browse files
🐛 Deduplicate processes
1 parent 3f37c7b commit 5803469

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

gruyere/main.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,18 @@ def get_processes() -> list[Process]:
158158
# Skip processes we can't access
159159
continue
160160

161+
# Deduplicate processes by (pid, port) - same process can listen on IPv4 and IPv6
162+
seen: set[tuple[int, int | str]] = set()
163+
unique_processes: list[Process] = []
164+
for p in processes:
165+
key = (p.pid, p.port)
166+
if key not in seen:
167+
seen.add(key)
168+
unique_processes.append(p)
169+
161170
# Sort processes by port number (numeric ports first, then strings)
162-
processes.sort(key=lambda p: (isinstance(p.port, str), p.port))
163-
return processes
171+
unique_processes.sort(key=lambda p: (isinstance(p.port, str), p.port))
172+
return unique_processes
164173

165174

166175
def kill_process(pid: int):

0 commit comments

Comments
 (0)