https://github.com/python/cpython/commit/77dd973815a033895cf6e5ed9056472e830c03a8
commit: 77dd973815a033895cf6e5ed9056472e830c03a8
branch: main
author: thexai <[email protected]>
committer: chris-eibl <[email protected]>
date: 2026-09-11T08:14:40+02:00
summary:

gh-152433: Windows: allow build socketmodule for UWP (#152601)

files:
A Misc/NEWS.d/next/Windows/2026-09-05-10-14-50.gh-issue-152433._LtjIg.rst
M Modules/clinic/socketmodule.c.h
M Modules/socketmodule.c

diff --git 
a/Misc/NEWS.d/next/Windows/2026-09-05-10-14-50.gh-issue-152433._LtjIg.rst 
b/Misc/NEWS.d/next/Windows/2026-09-05-10-14-50.gh-issue-152433._LtjIg.rst
new file mode 100644
index 000000000000000..e9ab1fe7281239d
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2026-09-05-10-14-50.gh-issue-152433._LtjIg.rst
@@ -0,0 +1 @@
+Allow build :mod:`socket` module for Universal Windows Platform.
diff --git a/Modules/clinic/socketmodule.c.h b/Modules/clinic/socketmodule.c.h
index dd5a906dda1a384..fcccf347a0ae9bd 100644
--- a/Modules/clinic/socketmodule.c.h
+++ b/Modules/clinic/socketmodule.c.h
@@ -2159,7 +2159,7 @@ PyDoc_STRVAR(_socket_setdefaulttimeout__doc__,
 #define _SOCKET_SETDEFAULTTIMEOUT_METHODDEF    \
     {"setdefaulttimeout", (PyCFunction)_socket_setdefaulttimeout, METH_O, 
_socket_setdefaulttimeout__doc__},
 
-#if (defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS))
+#if (defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS_DESKTOP))
 
 PyDoc_STRVAR(_socket_if_nameindex__doc__,
 "if_nameindex($module, /)\n"
@@ -2179,9 +2179,9 @@ _socket_if_nameindex(PyObject *module, PyObject 
*Py_UNUSED(ignored))
     return _socket_if_nameindex_impl(module);
 }
 
-#endif /* (defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS)) */
+#endif /* (defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS_DESKTOP)) */
 
-#if (defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS))
+#if (defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS_DESKTOP))
 
 PyDoc_STRVAR(_socket_if_nametoindex__doc__,
 "if_nametoindex($module, oname, /)\n"
@@ -2213,9 +2213,9 @@ _socket_if_nametoindex(PyObject *module, PyObject *arg)
     return return_value;
 }
 
-#endif /* (defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS)) */
+#endif /* (defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS_DESKTOP)) */
 
-#if (defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS))
+#if (defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS_DESKTOP))
 
 PyDoc_STRVAR(_socket_if_indextoname__doc__,
 "if_indextoname($module, if_index, /)\n"
@@ -2244,7 +2244,7 @@ _socket_if_indextoname(PyObject *module, PyObject *arg)
     return return_value;
 }
 
-#endif /* (defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS)) */
+#endif /* (defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS_DESKTOP)) */
 
 #if defined(CMSG_LEN)
 
@@ -2478,4 +2478,4 @@ _socket_CMSG_SPACE(PyObject *module, PyObject *arg)
 #ifndef _SOCKET_CMSG_SPACE_METHODDEF
     #define _SOCKET_CMSG_SPACE_METHODDEF
 #endif /* !defined(_SOCKET_CMSG_SPACE_METHODDEF) */
-/*[clinic end generated code: output=aa9082b592c39fa5 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=dfe0ca7c716c1183 input=a9049054013a1b77]*/
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index d189c6d478836c4..61505c2603f22c2 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -290,6 +290,10 @@ shutdown(how) -- shut down traffic in one or both 
directions\n\
 /* Helpers needed for AF_HYPERV */
 # include <Rpc.h>
 
+#ifndef RPC_S_OK
+#define RPC_S_OK 0L
+#endif
+
 /* Macros based on the IPPROTO enum, see: https://bugs.python.org/issue29515 */
 #define IPPROTO_ICMP IPPROTO_ICMP
 #define IPPROTO_IGMP IPPROTO_IGMP
@@ -631,14 +635,14 @@ _PyLong_##NAME##_Converter(PyObject *obj, void *ptr)      
          \
     return 1;                                                       \
 }
 
-#if defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS)
+#if defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS_DESKTOP)
 # ifdef MS_WINDOWS
     UNSIGNED_INT_CONVERTER(NetIfindex, NET_IFINDEX)
 # else
 #   define _PyLong_NetIfindex_Converter _PyLong_UnsignedInt_Converter
 #   define NET_IFINDEX unsigned int
 # endif
-#endif // defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS)
+#endif // defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS_DESKTOP)
 
 /*[python input]
 class NET_IFINDEX_converter(CConverter):
@@ -5924,10 +5928,12 @@ _socket_gethostname_impl(PyObject *module)
        Otherwise, gethostname apparently also returns the DNS name. */
     wchar_t buf[MAX_COMPUTERNAME_LENGTH + 1];
     DWORD size = Py_ARRAY_LENGTH(buf);
-    wchar_t *name;
-    PyObject *result;
 
+#ifdef MS_WINDOWS_DESKTOP
     if (GetComputerNameExW(ComputerNamePhysicalDnsHostname, buf, &size))
+#else
+    if (GetComputerNameW(buf, &size))
+#endif
         return PyUnicode_FromWideChar(buf, size);
 
     if (GetLastError() != ERROR_MORE_DATA)
@@ -5936,9 +5942,12 @@ _socket_gethostname_impl(PyObject *module)
     if (size == 0)
         return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
 
+#ifndef MS_WINDOWS_DESKTOP
+    return NULL;
+#else
     /* MSDN says ERROR_MORE_DATA may occur because DNS allows longer
        names */
-    name = PyMem_New(wchar_t, size);
+    wchar_t* name = PyMem_New(wchar_t, size);
     if (!name) {
         PyErr_NoMemory();
         return NULL;
@@ -5952,9 +5961,10 @@ _socket_gethostname_impl(PyObject *module)
         return NULL;
     }
 
-    result = PyUnicode_FromWideChar(name, size);
+    PyObject* result = PyUnicode_FromWideChar(name, size);
     PyMem_Free(name);
     return result;
+#endif
 #else
     char buf[1024];
     int res;
@@ -7321,7 +7331,7 @@ _socket_setdefaulttimeout(PyObject *module, PyObject *arg)
 }
 
 
-#if defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS)
+#if defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS_DESKTOP)
 /* Python API for getting interface indices and names */
 
 /*[clinic input]
@@ -7412,9 +7422,9 @@ _socket_if_nameindex_impl(PyObject *module)
 #endif
 }
 
-#endif // defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS)
+#endif // defined(HAVE_IF_NAMEINDEX) || defined(MS_WINDOWS_DESKTOP)
 
-#if defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS)
+#if defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS_DESKTOP)
 
 /*[clinic input]
 _socket.if_nametoindex
@@ -7444,9 +7454,9 @@ _socket_if_nametoindex_impl(PyObject *module, PyObject 
*oname)
     return PyLong_FromUnsignedLong(index);
 }
 
-#endif // defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS)
+#endif // defined(HAVE_IF_NAMETOINDEX) || defined(MS_WINDOWS_DESKTOP)
 
-#if defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS)
+#if defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS_DESKTOP)
 
 /*[clinic input]
 @permit_long_summary
@@ -7471,7 +7481,7 @@ _socket_if_indextoname_impl(PyObject *module, NET_IFINDEX 
index)
     return PyUnicode_DecodeFSDefault(name);
 }
 
-#endif // defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS)
+#endif // defined(HAVE_IF_INDEXTONAME) || defined(MS_WINDOWS_DESKTOP)
 
 
 #ifdef CMSG_LEN
@@ -9374,7 +9384,7 @@ socket_exec(PyObject *m)
 #endif
 #endif /* _MSTCPIP_ */
 
-#ifdef MS_WINDOWS
+#ifdef MS_WINDOWS_DESKTOP
     /* remove some flags on older version Windows during run-time */
     if (remove_unusable_flags(m) < 0) {
         goto error;

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to