diff options
author | bggardner <brent@ebrent.net> | 2019-09-12 10:02:48 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2019-09-12 10:02:48 (GMT) |
commit | 954900a3f98a8c0dea14dd575490237f3f8626b3 (patch) | |
tree | 20376e6ee25b3d01c27e6294ddedb87ff050a03e | |
parent | 64535fc6c0712caef0bc46be30e661f7ccf8280e (diff) | |
download | cpython-954900a3f98a8c0dea14dd575490237f3f8626b3.zip cpython-954900a3f98a8c0dea14dd575490237f3f8626b3.tar.gz cpython-954900a3f98a8c0dea14dd575490237f3f8626b3.tar.bz2 |
closes bpo-37405: Make socket.getsockname() always return a tuple for AF_CAN. (GH-14392)
This fixes a regression from 3.5. In recent releases, `getsockname()` in the AF_CAN case has returned a string.
-rwxr-xr-x | Lib/test/test_socket.py | 4 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-09-11-20-27-41.bpo-37405.MG5xiY.rst | 2 | ||||
-rw-r--r-- | Modules/socketmodule.c | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index b855c52..b745490 100755 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -1948,7 +1948,9 @@ class BasicCANTest(unittest.TestCase): def testBindAny(self): with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s: - s.bind(('', )) + address = ('', ) + s.bind(address) + self.assertEqual(s.getsockname(), address) def testTooLongInterfaceName(self): # most systems limit IFNAMSIZ to 16, take 1024 to be sure diff --git a/Misc/NEWS.d/next/Library/2019-09-11-20-27-41.bpo-37405.MG5xiY.rst b/Misc/NEWS.d/next/Library/2019-09-11-20-27-41.bpo-37405.MG5xiY.rst new file mode 100644 index 0000000..09e1097 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-09-11-20-27-41.bpo-37405.MG5xiY.rst @@ -0,0 +1,2 @@ +Fixed regression bug for socket.getsockname() for non-CAN_ISOTP AF_CAN +address family sockets by returning a 1-tuple instead of string. diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 3548b0c..c649fa3 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -1563,7 +1563,7 @@ makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto) #endif /* CAN_ISOTP */ default: { - return Py_BuildValue("O&", PyUnicode_DecodeFSDefault, + return Py_BuildValue("(O&)", PyUnicode_DecodeFSDefault, ifname); } } |