Author: Carl Friedrich Bolz-Tereick <[email protected]>
Branch: 
Changeset: r96797:8377609877a4
Date: 2019-06-12 13:48 +0200
http://bitbucket.org/pypy/pypy/changeset/8377609877a4/

Log:    backport rlib socket changes from 440feb6ea372 (minus tabs)

diff --git a/rpython/rlib/_rsocket_rffi.py b/rpython/rlib/_rsocket_rffi.py
--- a/rpython/rlib/_rsocket_rffi.py
+++ b/rpython/rlib/_rsocket_rffi.py
@@ -203,6 +203,7 @@
 FD_CONNECT_BIT FD_CLOSE_BIT
 WSA_IO_PENDING WSA_IO_INCOMPLETE WSA_INVALID_HANDLE
 WSA_INVALID_PARAMETER WSA_NOT_ENOUGH_MEMORY WSA_OPERATION_ABORTED
+WSA_FLAG_OVERLAPPED
 SIO_RCVALL SIO_KEEPALIVE_VALS
 
 SIOCGIFNAME SIOCGIFINDEX
@@ -1010,6 +1011,7 @@
     CConfig.WSAPROTOCOL_INFO = platform.Struct(
         'WSAPROTOCOL_INFOA',
         [])  # Struct is just passed between functions
+
     CConfig.FROM_PROTOCOL_INFO = platform.DefinedConstantInteger(
         'FROM_PROTOCOL_INFO')
 
@@ -1035,6 +1037,45 @@
          ('keepalivetime', rffi.ULONG),
          ('keepaliveinterval', rffi.ULONG)])
 
+    CConfig.GUID = platform.Struct(
+             'struct _GUID',
+             [('Data1', rffi.UINT),
+             ('Data2', rffi.UINT),
+             ('Data3', rffi.UINT),
+             ('Data4', rffi.CFixedArray(rffi.UCHAR, 8))
+         ])
+
+    CConfig.WSAPROTOCOLCHAIN = platform.Struct(
+        'struct _WSAPROTOCOLCHAIN',
+        [('ChainLen', rffi.INT),
+         ('ChainEntries', rffi.CFixedArray(rffi.UINT, 7))])
+
+    WSAPROTOCOLCHAIN = CConfig.WSAPROTOCOLCHAIN
+    GUID = CConfig.GUID
+
+    CConfig.WSAPROTOCOL_INFOW = platform.Struct(
+        'struct _WSAPROTOCOL_INFOW',
+        [('dwServiceFlags1', rffi.UINT),
+         ('dwServiceFlags2', rffi.UINT),
+         ('dwServiceFlags3', rffi.UINT),
+         ('dwServiceFlags4', rffi.UINT),
+         ('dwProviderFlags', rffi.UINT),
+         ('ProviderId', GUID),
+         ('dwCatalogEntryId', rffi.UINT),
+         ('ProtocolChain', WSAPROTOCOLCHAIN),
+         ('iVersion', rffi.INT),
+         ('iAddressFamily', rffi.INT),
+         ('iMaxSockAddr', rffi.INT),
+         ('iMinSockAddr', rffi.INT),
+         ('iSocketType', rffi.INT),
+         ('iProtocol', rffi.INT),
+         ('iProtocolMaxOffset', rffi.INT),
+         ('iNetworkByteOrder', rffi.INT),
+         ('iSecurityScheme', rffi.INT),
+         ('dwMessageSize', rffi.UINT),
+         ('dwProviderReserved', rffi.UINT),
+         ('szProtocol',  rffi.CFixedArray(rffi.UCHAR, 256))])
+
 
 class cConfig:
     pass
@@ -1337,6 +1378,20 @@
                          rffi.VOIDP, rwin32.DWORD,
                          rwin32.LPDWORD, rffi.VOIDP, rffi.VOIDP],
                         rffi.INT, save_err=SAVE_ERR)
+
+    WSAPROTOCOL_INFOW = cConfig.WSAPROTOCOL_INFOW
+
+    WSADuplicateSocketW = external('WSADuplicateSocketW',
+                                 [socketfd_type, rwin32.DWORD,
+                                  lltype.Ptr(WSAPROTOCOL_INFOW)],
+                                  rffi.INT, save_err=SAVE_ERR)
+
+    WSASocketW = external('WSASocketW',
+                         [rffi.INT, rffi.INT, rffi.INT,
+                          lltype.Ptr(WSAPROTOCOL_INFOW),
+                          rwin32.DWORD, rwin32.DWORD],
+                         socketfd_type, save_err=SAVE_ERR)
+
     tcp_keepalive = cConfig.tcp_keepalive
 
     WSAPROTOCOL_INFO = cConfig.WSAPROTOCOL_INFO
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to