diff options
author | Charles-François Natali <cf.natali@gmail.com> | 2013-05-21 07:49:18 (GMT) |
---|---|---|
committer | Charles-François Natali <cf.natali@gmail.com> | 2013-05-21 07:49:18 (GMT) |
commit | c7c333d25d258187d71b6658e90796daba708912 (patch) | |
tree | c296f338290b15ee330eef4e891bfd10da9d206b | |
parent | 87ff387254d277b4faa6d4b9efca0a5361837404 (diff) | |
download | cpython-c7c333d25d258187d71b6658e90796daba708912.zip cpython-c7c333d25d258187d71b6658e90796daba708912.tar.gz cpython-c7c333d25d258187d71b6658e90796daba708912.tar.bz2 |
Issue #17683: socket module: return AF_UNIX addresses in Linux abstract
namespace as string.
-rw-r--r-- | Lib/test/test_socket.py | 12 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/socketmodule.c | 2 |
3 files changed, 10 insertions, 7 deletions
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 @@ class TestLinuxAbstractNamespace(unittest.TestCase): 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 @@ class TestLinuxAbstractNamespace(unittest.TestCase): 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 @@ class TestLinuxAbstractNamespace(unittest.TestCase): 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() @@ -99,6 +99,9 @@ Core and Builtins 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 @@ makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto) #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 */ |