updated occurences of fqdn algorithm (closes patch #101197)
diff --git a/Lib/BaseHTTPServer.py b/Lib/BaseHTTPServer.py
index ea5095a..49f8984 100644
--- a/Lib/BaseHTTPServer.py
+++ b/Lib/BaseHTTPServer.py
@@ -93,19 +93,7 @@
         """Override server_bind to store the server name."""
         SocketServer.TCPServer.server_bind(self)
         host, port = self.socket.getsockname()
-        if not host or host == '0.0.0.0':
-            host = socket.gethostname()
-        try:
-            hostname, hostnames, hostaddrs = socket.gethostbyaddr(host)
-        except socket.error:
-            hostname = host
-        else:
-            if '.' not in hostname:
-                for host in hostnames:
-                    if '.' in host:
-                        hostname = host
-                        break
-        self.server_name = hostname
+        self.server_name = socket.getfqdn(host)
         self.server_port = port
 
 
@@ -418,16 +406,8 @@
 
         """
 
-        (host, port) = self.client_address
-        try:
-            name, names, addresses = socket.gethostbyaddr(host)
-        except socket.error, msg:
-            return host
-        names.insert(0, name)
-        for name in names:
-            if '.' in name: return name
-        return names[0]
-
+        host, port = self.client_address
+        return socket.getfqdn(host)
 
     # Essentially static class variables
 
diff --git a/Lib/ftplib.py b/Lib/ftplib.py
index fd9127b..41c3b33 100644
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -41,7 +41,8 @@
 
 # Import SOCKS module if it exists, else standard socket module socket
 try:
-	import SOCKS; socket = SOCKS
+	import SOCKS; socket = SOCKS; del SOCKS # import SOCKS as socket
+	from socket import getfqdn; socket.getfqdn = getfqdn; del getfqdn
 except ImportError:
 	import socket
 
@@ -291,17 +292,8 @@
 		if not passwd: passwd = ''
 		if not acct: acct = ''
 		if user == 'anonymous' and passwd in ('', '-'):
-			thishost = socket.gethostname()
-			# Make sure it is fully qualified
-			if not '.' in thishost:
-				thisaddr = socket.gethostbyname(thishost)
-				firstname, names, unused = \
-					   socket.gethostbyaddr(thisaddr)
-				names.insert(0, firstname)
-				for name in names:
-					if '.' in name:
-						thishost = name
-						break
+			# get fully qualified domain name of local host
+			thishost = socket.getfqdn()
 			try:
 				if os.environ.has_key('LOGNAME'):
 					realuser = os.environ['LOGNAME']
diff --git a/Lib/socket.py b/Lib/socket.py
index 3cc8d91..e5180b5 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -85,7 +85,7 @@
     is returned.
     """
     name = name.strip()
-    if len(name) == 0:
+    if not name or name == '0.0.0.0':
         name = gethostname()
     try:
         hostname, aliases, ipaddrs = gethostbyaddr(name)