Correct getnameinfo refcounting and tuple parsing. Fixes #476648.
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 1880b11..e923d82 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -90,6 +90,20 @@
     except socket.error:
         pass
 
+try:
+    # On some versions, this loses a reference
+    import sys
+    orig = sys.getrefcount(__name__)
+    socket.getnameinfo(__name__,0)
+except SystemError:
+    if sys.getrefcount(__name__) <> orig:
+        raise TestFailed,"socket.getnameinfo loses a reference"
+
+try:
+    # On some versions, this crashes the interpreter.
+    socket.getnameinfo(('x', 0, 0, 0), 0)
+except socket.gaierror:
+    pass
 
 canfork = hasattr(os, 'fork')
 try: