]> git.kaiwu.me - nginx.git/commit
Improved maximum errno detection.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 1 Mar 2021 17:00:43 +0000 (20:00 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 1 Mar 2021 17:00:43 +0000 (20:00 +0300)
commit71eb19da43e3382ce97a14b6d3cd564881da37e7
treed76356c1b62fa4a12f1a714dfba12bd0920097a8
parent0f5d0c5798eacb60407bcf0a76fc0b2c39e356bb
Improved maximum errno detection.

Previously, systems without sys_nerr (or _sys_nerr) were handled with an
assumption that errors start at 0 and continuous.  This is, however, not
something POSIX requires, and not true on some platforms.

Notably, on Linux, where sys_nerr is no longer available for newly linked
binaries starting with glibc 2.32, there are gaps in error list, which
used to stop us from properly detecting maximum errno.  Further, on
GNU/Hurd errors start at 0x40000001.

With this change, maximum errno detection is moved to the runtime code,
now able to ignore gaps, and also detects the first error if needed.
This fixes observed "Unknown error" messages as seen on Linux with
glibc 2.32 and on GNU/Hurd.
auto/unix
src/os/unix/ngx_errno.c