Author: Matti Picus <[email protected]>
Branch: 
Changeset: r92392:7f45abeb0620
Date: 2017-09-14 22:34 +0300
http://bitbucket.org/pypy/pypy/changeset/7f45abeb0620/

Log:    getsockopt calls on win32 with BOOL param return 1 byte

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
@@ -589,7 +589,12 @@
         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'
+        ret = s.getsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, 2)
+        if len(ret) == 1:
+            # win32 returns a byte-as-bool
+            assert ret == b'\x00'
+        else:
+            assert ret == 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)
@@ -599,7 +604,11 @@
         import _socket
         s = _socket.socket()
         buf = s.getsockopt(_socket.IPPROTO_TCP, _socket.TCP_NODELAY, 1024)
-        assert buf == b'\x00' * 4
+        if len(buf) == 1:
+            # win32 returns a byte-as-bool
+            assert buf == b'\x00'
+        else:
+            assert buf == b'\x00' * 4
         raises(_socket.error, s.getsockopt,
                _socket.IPPROTO_TCP, _socket.TCP_NODELAY, 1025)
         raises(_socket.error, s.getsockopt,
diff --git a/rpython/rlib/rsocket.py b/rpython/rlib/rsocket.py
--- a/rpython/rlib/rsocket.py
+++ b/rpython/rlib/rsocket.py
@@ -845,6 +845,8 @@
     @jit.dont_look_inside
     def getsockopt_int(self, level, option):
         flag_p = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        # some win32 calls use only a byte to represent a bool
+        flag_p[0] = 0
         try:
             flagsize_p = lltype.malloc(_c.socklen_t_ptr.TO, flavor='raw')
             try:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to