bpo-40635: Fix getfqdn() docstring and docs (GH-27971)


Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
(cherry picked from commit fdcb675eed47b1f6054fae381af4388b16a6fff4)

Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index e1db1b5..1b6dc4d 100755
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -808,8 +808,9 @@
    it is interpreted as the local host.  To find the fully qualified name, the
    hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
    host, if available.  The first name which includes a period is selected.  In
-   case no fully qualified domain name is available, the hostname as returned by
-   :func:`gethostname` is returned.
+   case no fully qualified domain name is available and *name* was provided,
+   it is returned unchanged.  If *name* was empty or equal to ``'0.0.0.0'``,
+   the hostname from :func:`gethostname` is returned.
 
 
 .. function:: gethostbyname(hostname)
diff --git a/Lib/socket.py b/Lib/socket.py
index fc11eb7..63ba0ac 100755
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -782,8 +782,9 @@ def getfqdn(name=''):
     An empty argument is interpreted as meaning the local host.
 
     First the hostname returned by gethostbyaddr() is checked, then
-    possibly existing aliases. In case no FQDN is available, hostname
-    from gethostname() is returned.
+    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',
+    hostname from gethostname() is returned.
     """
     name = name.strip()
     if not name or name == '0.0.0.0':