Message187234
| Author |
Stijn.Hoop |
| Recipients |
BreamoreBoy, Stijn.Hoop, ankitoshniwal, dfranke, loewis, mcjeff, r.david.murray |
| Date |
2013年04月18日.10:14:06 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1366280047.5.0.509696653675.issue5004@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
OK, fair enough.
From reading sources, it appears that hostname is using getaddrinfo(3) on kernelhostname with hints->ai_flags & AI_CANONNAME, while Lib/socket.py simply uses gethostbyaddr(kernelhostname), and falls back on kernelhostname in case of errors.
Unfortunately I am not entirely sure who is "correct" here, as I don't know the intent of socket.getfqdn().
In my case, kernelhostname is set to 'pclin281' e.g. without the dots. I believe this to be correct, but I know that this is already "controversial" as in there exists software that expects an FQDN there, and internet folklore is split about 50/50 about this necessity.
Then, apparently, there is confusion about AI_CANONNAME and what it actually should do. glibc upstream does address lookups but Fedora patches this out. See this recent glibc bug for more pointers:
http://sourceware.org/bugzilla/show_bug.cgi?id=15218
As mentioned in that bug, a lot of software runs on Fedora and works using that definition of AI_CANONNAME.
However, switching Lib/socket.py / getfqdn from gethostbyaddr to getaddrinfo might have more implications than just fixing this case. I can try to write a patch, but is this the right direction? |
|