I think it mainly boils down to this


which seems to be a design flaw in the socket layer, i.e.
listen() allows for a backlog which accept() cannot satisfy
due to other process/system constraints. In the shiny modern
world of multi threads/cores and a single table of file
descriptors per process this introduces a race which properly
could be resolved only by kernel support in the spirit of dup2(),
i.e. atomically swap an old file descriptor with the new one
obtained through accept(). Thus, I blatantly propose to name
this new system call either dupcept() or accdupt(). I bet, the
lack of it already burned legions of software engineers.