[pypy-commit] pypy py3.5: CMSG_SPACE, CMSG_LEN not available on windows

mattip pypy.commits at gmail.com
Mon Sep 25 01:33:38 EDT 2017


Author: Matti Picus <matti.picus at gmail.com>
Branch: py3.5
Changeset: r92465:6a7983eb68b8
Date: 2017-09-25 08:32 +0300
http://bitbucket.org/pypy/pypy/changeset/6a7983eb68b8/

Log:	CMSG_SPACE, CMSG_LEN not available on windows

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,3 +1,4 @@
+import sys
 from rpython.rlib import rsocket
 from rpython.rlib.rsocket import SocketError, INVALID_SOCKET
 from rpython.rlib.rarithmetic import intmask, r_longlong, r_uint32
@@ -327,41 +328,42 @@
             for (family, socktype, protocol, canonname, addr) in lst]
     return space.newlist(lst1)
 
- at unwrap_spec(size=int)
-def CMSG_SPACE(space, size):
-    """
-    Socket method to determine the optimal byte size of the ancillary.
-    Recommended to be used when computing the ancillary size for recvmsg.
-    :param space:
-    :param size: an integer with the minimum size required.
-    :return: an integer with the minimum memory needed for the required size. The value is memory alligned
-    """
-    if size < 0:
-        raise oefmt(space.w_OverflowError,
-                    "CMSG_SPACE() argument out of range")
-    retval = rsocket.CMSG_SPACE(size)
-    if retval == 0:
-        raise oefmt(space.w_OverflowError,
-                    "CMSG_SPACE() argument out of range")
-    return space.newint(retval)
+if sys.platform != 'win32':
+    @unwrap_spec(size=int)
+    def CMSG_SPACE(space, size):
+        """
+        Socket method to determine the optimal byte size of the ancillary.
+        Recommended to be used when computing the ancillary size for recvmsg.
+        :param space:
+        :param size: an integer with the minimum size required.
+        :return: an integer with the minimum memory needed for the required size. The value is memory alligned
+        """
+        if size < 0:
+            raise oefmt(space.w_OverflowError,
+                        "CMSG_SPACE() argument out of range")
+        retval = rsocket.CMSG_SPACE(size)
+        if retval == 0:
+            raise oefmt(space.w_OverflowError,
+                        "CMSG_SPACE() argument out of range")
+        return space.newint(retval)
 
- at unwrap_spec(len=int)
-def CMSG_LEN(space, len):
-    """
-    Socket method to determine the optimal byte size of the ancillary.
-    Recommended to be used when computing the ancillary size for recvmsg.
-    :param space:
-    :param len: an integer with the minimum size required.
-    :return: an integer with the minimum memory needed for the required size. The value is not mem alligned.
-    """
-    if len < 0:
-        raise oefmt(space.w_OverflowError,
-                    "CMSG_LEN() argument out of range")
-    retval = rsocket.CMSG_LEN(len)
-    if retval == 0:
-        raise oefmt(space.w_OverflowError,
-                    "CMSG_LEN() argument out of range")
-    return space.newint(retval)
+    @unwrap_spec(len=int)
+    def CMSG_LEN(space, len):
+        """
+        Socket method to determine the optimal byte size of the ancillary.
+        Recommended to be used when computing the ancillary size for recvmsg.
+        :param space:
+        :param len: an integer with the minimum size required.
+        :return: an integer with the minimum memory needed for the required size. The value is not mem alligned.
+        """
+        if len < 0:
+            raise oefmt(space.w_OverflowError,
+                        "CMSG_LEN() argument out of range")
+        retval = rsocket.CMSG_LEN(len)
+        if retval == 0:
+            raise oefmt(space.w_OverflowError,
+                        "CMSG_LEN() argument out of range")
+        return space.newint(retval)
 
 def getdefaulttimeout(space):
     """getdefaulttimeout() -> timeout


More information about the pypy-commit mailing list