Author: Alecsandru Patrascu <alecsandru.patra...@rinftech.com> Branch: sockopt_zero Changeset: r91366:4c2ff9e6a959 Date: 2017-05-22 14:10 +0300 http://bitbucket.org/pypy/pypy/changeset/4c2ff9e6a959/
Log: proper fix after review diff --git a/pypy/module/_socket/interp_socket.py b/pypy/module/_socket/interp_socket.py --- a/pypy/module/_socket/interp_socket.py +++ b/pypy/module/_socket/interp_socket.py @@ -305,14 +305,13 @@ If a nonzero buffersize argument is given, the return value is a string of that length; otherwise it is an integer. """ - if w_buflen is None: + if w_buflen is not None: + buflen = space.int_w(w_buflen) + if w_buflen is None or buflen == 0: try: return space.newint(self.sock.getsockopt_int(level, optname)) except SocketError as e: raise converted_error(space, e) - buflen = space.int_w(w_buflen) - if buflen == 0: - return space.newint(0) return space.newbytes(self.sock.getsockopt(level, optname, buflen)) def gettimeout_w(self, space): 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 @@ -582,15 +582,18 @@ (reuse,) = struct.unpack('i', reusestr) assert reuse != 0 - def test_getsockopt_zero(self): - # related to issue #2561: in CPython, when setting the buffer size: - # if 0, should return 0, + def test_getsetsockopt_zero(self): + # related to issue #2561: when specifying the buffer size param: + # if 0 or None, should return the setted value, # otherwise an empty buffer of the specified size import _socket s = _socket.socket() - assert s.getsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, 0) == 0 assert s.getsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, 2) == b'\x00\x00' + s.setsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, True) + assert s.getsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, 0) == 1 + s.setsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, 1) + assert s.getsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, 0) == 1 def test_socket_ioctl(self): import _socket, sys _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit