Issue #17683: socket module: return AF_UNIX addresses in Linux abstract
namespace as string.
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 546d793..cb00c38 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -4451,7 +4451,7 @@
     UNIX_PATH_MAX = 108
 
     def testLinuxAbstractNamespace(self):
-        address = b"\x00python-test-hello\x00\xff"
+        address = "\x00python-test-hello\x00\xff"
         with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s1:
             s1.bind(address)
             s1.listen(1)
@@ -4462,7 +4462,7 @@
                     self.assertEqual(s2.getpeername(), address)
 
     def testMaxName(self):
-        address = b"\x00" + b"h" * (self.UNIX_PATH_MAX - 1)
+        address = "\x00" + "h" * (self.UNIX_PATH_MAX - 1)
         with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s:
             s.bind(address)
             self.assertEqual(s.getsockname(), address)
@@ -4472,12 +4472,12 @@
         with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s:
             self.assertRaises(OSError, s.bind, address)
 
-    def testStrName(self):
-        # Check that an abstract name can be passed as a string.
+    def testBytesName(self):
+        # Check that an abstract name can be passed as bytes.
         s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
         try:
-            s.bind("\x00python\x00test\x00")
-            self.assertEqual(s.getsockname(), b"\x00python\x00test\x00")
+            s.bind(b"\x00python\x00test\x00")
+            self.assertEqual(s.getsockname(), "\x00python\x00test\x00")
         finally:
             s.close()
 
diff --git a/Misc/NEWS b/Misc/NEWS
index acd89e4..12bb2d4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -99,6 +99,9 @@
 Library
 -------
 
+- Issue #17683: socket module: return AF_UNIX addresses in Linux abstract
+  namespace as string.
+
 - Issue #17914: Add os.cpu_count(). Patch by Yogesh Chaudhari, based on an
   initial patch by Trent Nelson.
 
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 20db3d9..ae2924c 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1018,7 +1018,7 @@
 #ifdef linux
         if (a->sun_path[0] == 0) {  /* Linux abstract namespace */
             addrlen -= offsetof(struct sockaddr_un, sun_path);
-            return PyBytes_FromStringAndSize(a->sun_path, addrlen);
+            return PyUnicode_DecodeFSDefaultAndSize(a->sun_path, addrlen);
         }
         else
 #endif /* linux */