Fix socket to PID translation on FreeBSD. #1070
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This file was derived from FreeBSD usr.bin/sockstat/sockstat.c. The
logic of socket to PID translation was copied incorrectly. The hash,
that sockstat(1) utility has, is completely internal feature, it isn't
part of FreeBSD API, it is just to speed things up. So, to use this
hash one actually needs to create it: declare array of buckets, populate
it with sockets. In the freebsd_socks.c this wasn't done. This fix
doesn't create the hash, instead it removes remnants of hashing that was
there in sockstat.c. It makes code more simple, but of course slower than
original sockstat(1) in case if machine is running zillions of sockets. I
decided to go this way simply because I am low on time to invest into
psutil, and also because better first provide correct and simple
implementation and then improve it, rather than jump for complexity.