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]