Skip to content

Commit

Permalink
pythongh-100374: Fixed a bug in socket.getfqdn() (pythongh-100375)
Browse files Browse the repository at this point in the history
(cherry picked from commit 12be23c)

Co-authored-by: Dominic Socular <BBH@awsl.rip>
  • Loading branch information
miss-islington and MTAwsl authored Dec 21, 2022
1 parent ae8520c commit b2076b0
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Lib/socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -784,11 +784,11 @@ def getfqdn(name=''):
First the hostname returned by gethostbyaddr() is checked, then
possibly existing aliases. In case no FQDN is available and `name`
was given, it is returned unchanged. If `name` was empty or '0.0.0.0',
was given, it is returned unchanged. If `name` was empty, '0.0.0.0' or '::',
hostname from gethostname() is returned.
"""
name = name.strip()
if not name or name == '0.0.0.0':
if not name or name in ('0.0.0.0', '::'):
name = gethostname()
try:
hostname, aliases, ipaddrs = gethostbyaddr(name)
Expand Down
4 changes: 4 additions & 0 deletions Lib/test/test_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -1760,6 +1760,10 @@ def test_getaddrinfo_ipv6_basic(self):
)
self.assertEqual(sockaddr, ('ff02::1de:c0:face:8d', 1234, 0, 0))

def test_getfqdn_filter_localhost(self):
self.assertEqual(socket.getfqdn(), socket.getfqdn("0.0.0.0"))
self.assertEqual(socket.getfqdn(), socket.getfqdn("::"))

@unittest.skipUnless(socket_helper.IPV6_ENABLED, 'IPv6 required for this test.')
@unittest.skipIf(sys.platform == 'win32', 'does not work on Windows')
@unittest.skipIf(AIX, 'Symbolic scope id does not work')
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix incorrect result and delay in :func:`socket.getfqdn`. Patch by Dominic Socular.

0 comments on commit b2076b0

Please sign in to comment.