Bug 214171 - I am not sure why the definition of EAI_SYSTEM, from getaddrinfo, was changed from POSIX
Summary: I am not sure why the definition of EAI_SYSTEM, from getaddrinfo, was changed...
Status: NEW
Alias: None
Product: Documentation
Classification: Unclassified
Component: man-pages (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: documentation_man-pages@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-08-25 14:49 UTC by Cristian Morales Vega
Modified: 2021-08-25 15:41 UTC (History)
1 user (show)

See Also:
Kernel Version:
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Cristian Morales Vega 2021-08-25 14:49:59 UTC
https://man7.org/linux/man-pages/man3/freeaddrinfo.3p.html says:

"[EAI_SYSTEM] A system error occurred; the error code can be found in errno."

Which makes a lot of sense. The function can fall because of name-resolution specific problem (EAI_NODATA). But otherwise it must be a plain old generic error that can be expressed with errno, so you should look in errno.

It's not explicitly said. But IMHO it's clear that it would be a bug to return EAI_SYSTEM without setting errno/setting errno to zero.


But then https://man7.org/linux/man-pages/man3/getaddrinfo.3.html replaces it with:

"EAI_SYSTEM Other system error, check errno for details."

Which, I'm not a native speaker, but it seems to me to leave returning EAI_SYSTEM and setting errno to 0 more open to interpretation. You can argue that in such a case errno == 0 simply means "no details".
Comment 1 Alejandro Colomar 2021-08-25 15:41:05 UTC
It seems reasonable to have doubts about if (ret == EAI_SYSTEM && errno == 0) can happen, with the current wording.

Perhaps we can use a wording similar to most pages' RETURN VALUE section:

[
EAI_SYSTEM  Other system error; errno is set to indicate the error.
]

This is more explicit in that "errno is _set_".

Hmm?

Note You need to log in before you can comment on or make changes to this bug.