diff --git a/Misc/NEWS.d/next/Library/2025-12-20-10-21-23.gh-issue-142991.jYHD9E.rst b/Misc/NEWS.d/next/Library/2025-12-20-10-21-23.gh-issue-142991.jYHD9E.rst new file mode 100644 index 00000000000000..2c76bb4f2bcff9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-12-20-10-21-23.gh-issue-142991.jYHD9E.rst @@ -0,0 +1,2 @@ +Fixed socket operations such as recvfrom() and sendto() for FreeBSD +divert(4) socket. diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index edc79c9d3b878c..4362d95ae1ff13 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -2649,6 +2649,12 @@ getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret) /* RDS sockets use sockaddr_in: fall-through */ #endif /* AF_RDS */ +#ifdef AF_DIVERT + case AF_DIVERT: + /* FreeBSD divert(4) sockets use sockaddr_in: fall-through */ + _Py_FALLTHROUGH; +#endif /* AF_DIVERT */ + case AF_INET: { *len_ret = sizeof (struct sockaddr_in);