An app listening on a unix socket also listens on a DERIVED one — the same
address plus ".http" — because a websocket upgrade cannot cross ZAP framing. The
five bytes that suffix adds are not something the caller chose and not something
it can see, so a path that fits can still put its sibling over Darwin's 103-byte
sun_path limit.
It failed inside the transport as "bind: invalid argument", which names neither
the limit nor the length and reads like a broken socket rather than a long path.
It cost a real afternoon to read once already, in a test whose own NAME was the
49 bytes that pushed it over.
load.go has asked exactly this question of exactly this address since the plugin
loader learned it. This is the other half of that one rule, asked in listenOn
where an error can still be returned rather than in plainSibling, which has no
way to report one and would otherwise have to disable upgrades silently.
Co-authored-by: Hanzo Dev <[email protected]>