[Bug 262172] UNIX Domain bind() - distinguish between random garbage and alive listening socket

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 02 Mar 2022 21:53:55 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262172

--- Comment #5 from firk@cantconnect.ru ---
Even disabled by default, it may be used by aware applications in the following
way:

EADDRINUSE -> assume really busy address, print an error and fail,
EEXIST -> remove stale socket and try again,
EFTYPE -> print an error about wrong path and fail

When the feature is disabled, application will just fail on all three cases (a
lot of application behaves in this way already), but when the feature is
enabled, it will handle stale sockets properly.

As for unaware applications:
1) most of them just fails on any bind error,
2) some of them tries to cleanup stale socket before bind, or after any bind
error,
3) some of them tries to cleanup stale socket on EADDRINUSE and displays a
error for all other codes.

Third type of applications may be broken due to this change, and they are the
only reason for disabling it by default.

-- 
You are receiving this mail because:
You are the assignee for the bug.