Author: Philip Jenvey <pjen...@underboss.org> Branch: py3k Changeset: r61517:073c18fd3eb3 Date: 2013-02-20 16:13 -0800 http://bitbucket.org/pypy/pypy/changeset/073c18fd3eb3/
Log: fix getnameinfo's handling of ipv6 addrs diff --git a/pypy/module/_socket/interp_func.py b/pypy/module/_socket/interp_func.py --- a/pypy/module/_socket/interp_func.py +++ b/pypy/module/_socket/interp_func.py @@ -1,6 +1,6 @@ from pypy.interpreter.gateway import unwrap_spec, WrappedDefault from pypy.module._socket.interp_socket import ( - converted_error, W_RSocket, addr_as_object, ipaddr_from_object, get_error) + converted_error, W_RSocket, addr_as_object, fill_from_object, get_error) from rpython.rlib import rsocket from rpython.rlib.rsocket import SocketError, INVALID_SOCKET from pypy.interpreter.error import OperationError @@ -121,9 +121,8 @@ Get host and port for a sockaddr.""" try: - w_host, w_port = space.fixedview(w_sockaddr, 2) - host = space.str_w(w_host) - port = str(space.int_w(w_port)) + host = space.str_w((space.getitem(w_sockaddr, space.wrap(0)))) + port = str(space.int_w(space.getitem(w_sockaddr, space.wrap(1)))) lst = rsocket.getaddrinfo(host, port, rsocket.AF_UNSPEC, rsocket.SOCK_DGRAM, 0, rsocket.AI_NUMERICHOST) @@ -132,6 +131,7 @@ get_error(space, 'error'), space.wrap("sockaddr resolved to multiple addresses")) addr = lst[0][4] + fill_from_object(addr, space, w_sockaddr) host, servport = rsocket.getnameinfo(addr, flags) except SocketError, e: raise converted_error(space, e) diff --git a/pypy/module/_socket/test/test_sock_app.py b/pypy/module/_socket/test/test_sock_app.py --- a/pypy/module/_socket/test/test_sock_app.py +++ b/pypy/module/_socket/test/test_sock_app.py @@ -273,7 +273,12 @@ space.raises_w(get_error(space, 'error'), space.appexec, [w_socket, sockaddr, space.wrap(0)], "(_socket, sockaddr, flags): return _socket.getnameinfo(sockaddr, flags)") - + if socket.has_ipv6: + sockaddr = space.newtuple([space.wrap('::1'), space.wrap(0), + space.wrap(0xffffffff)]) + space.raises_w(space.w_OverflowError, space.appexec, + [w_socket, sockaddr, space.wrap(0)], + "(_socket, sockaddr, flags): return _socket.getnameinfo(sockaddr, flags)") def test_timeout(): space.appexec([w_socket, space.wrap(25.4)], _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit