Skip to content

Releases: sv222/portpin

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 09 Sep 13:19

Worth upgrading if you use --protocol udp or the JSON output: both reported
the same process once per socket.

Changed

  • The human table prints rows that would look identical once, and a new
    SOCKETS column counts how many sockets stand behind each one. A process
    can legitimately hold several distinct sockets on one endpoint - the
    SO_REUSEADDR mDNS listeners that open one socket per interface are the
    common case - and the table's columns cannot tell those sockets apart, so
    portpin --protocol udp 5353 used to repeat the same row many times. The
    JSON bindings array is unaffected and still lists every socket.
  • The JSON actions array now carries one entry per process rather than one
    per socket. The kernel socket tables list a row per socket, so a process
    holding several SO_REUSEADDR sockets on one endpoint - the usual shape of
    mDNS on udp/5353 - was reported once per socket:
    portpin --dry-run --protocol udp 5353 --json emitted 20 actions for 3
    processes, each with the same PID and the same outcome. bindings is
    unchanged and still lists every socket.

Fixed

  • The confirmation prompt counted sockets instead of processes, asking
    "terminate 20 process(es)?" when only 3 processes held those sockets.
  • portpin no longer prompts for confirmation when a single process holds
    more than one socket on the target endpoint. There is still only one
    process to stop, so the multiple-owner prompt did not apply.

Full changelog: v0.1.1...v0.1.2

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 08 Sep 23:01

The binary is unchanged: this release is documentation and build plumbing only.
If v0.1.0 works for you, there is no fix here to upgrade for.

Added

  • README: a "Common cases" table keyed by the error text you actually get -
    EADDRINUSE: address already in use, [Errno 98] Address already in use,
    bind: address already in use, Windows' Only one usage of each socket address is normally permitted, and Docker's port is already allocated.
  • README: equivalents for netstat/taskkill, lsof | xargs kill -9,
    fuser -k, ss -ltnp, Get-NetTCPConnection and npx kill-port.
  • README: an FAQ entry for Docker's port is already allocated, describing the
    container-proxy advisory and why docker stop is the right answer.
  • README: an FAQ entry on the Windows Defender false positive, including how to
    verify a download against the checksums.txt published below.
  • README: usage examples for UDP and for ports other than 8080.

Changed

  • The pinned GitHub Actions moved off the deprecated Node.js 20 runtime.

Full changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 19:36

Changelog

  • 57972fb ci: fix release go version and add least-privilege hardening
  • d675897 ci: pin golangci-lint to v2.13.2 to match go 1.25 and config v2
  • 33c434f ci: pin third-party actions to commit SHA
  • cfd8c62 ci: test matrix, goreleaser config, and README
  • 9bd1513 ci: upgrade golangci-lint-action to v7 (v6 rejects golangci-lint v2)
  • c51be7e debug: remove temporary PORTPIN_DEBUG_DISCOVER instrumentation
  • 218e3f8 debug: temporary PORTPIN_DEBUG_DISCOVER instrumentation for the race test
  • 542e5c2 feat(advise): container-proxy advisory from cmdline only
  • 38f0f60 feat(cli): flags, target parsing, orchestration and exit codes
  • 79469c7 feat(discover): linux resolver mapping socket inodes to processes
  • dcb4c6b feat(discover): pure /proc/net socket table parser
  • 591e94a feat(discover): pure IPHlpAPI extended-table decoder
  • fad18eb feat(discover): windows resolver over IPHlpAPI extended tables
  • ac17542 feat(model): core domain types for sockets and processes
  • c478bfd feat(model): endpoint filter with dual-stack wildcard rules
  • e634a76 feat(pin): controller interface, sentinel errors, scripted fake
  • 34bb7bd feat(pin): linux pidfd controller with starttime sandwich check
  • 76f062b feat(pin): windows handle controller with console-break graceful stop
  • 560814a feat(render): human table and stable JSON report
  • 398b001 feat(terminate): syscall-free escalation state machine
  • 90171c3 fix(discover): don't report a raced-away socket as permission denied
  • d366cde fix(discover): prefer exact-address match over wildcard listener
  • 8457f9f fix(discover): retry the owner scan before reporting permission denied
  • ae300e8 fix(pin): claim CTRL_BREAK and survive async console dispatch
  • 5daedb3 fix: address final review findings across cli, discover and pin
  • 478650a fix: check errors from Close on linux-only files
  • 20356c7 fix: check errors from Close/CloseHandle in defer