Issue #17683: socket module: return AF_UNIX addresses in Linux abstract
namespace as string.
This commit is contained in:
parent
87ff387254
commit
c7c333d25d
|
@ -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.
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue