aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYelninei <yelninei@tutamail.com>2025-05-15 07:51:43 +0000
committerLudovic Courtès <ludo@gnu.org>2025-05-18 22:55:54 +0200
commite98153b96c9a90d91db5421fe431b384602d1c9d (patch)
tree21c9e7896a730e56f977c43203b1e7e64ad6b18d
parent114f0a615f55167d0b227d5a3cb0fb2e36772858 (diff)
downloadguix-e98153b96c9a90d91db5421fe431b384602d1c9d.tar.gz
guix-e98153b96c9a90d91db5421fe431b384602d1c9d.zip
gnu: hurd: Fix service socket activation.
Fixes <https://issues.guix.gnu.org/77610>. * gnu/packages/patches/hurd-socket-activation.patch: New patch * gnu/packages/hurd.scm (hurd): Add it. * gnu/local.mk: Register it. Change-Id: Iff7f30099ffeb014aaacdc3a19bd7930795904b6 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/hurd.scm1
-rw-r--r--gnu/packages/patches/hurd-socket-activation.patch44
3 files changed, 46 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 2384b44b14..3730d272ea 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1593,6 +1593,7 @@ dist_patch_DATA = \
%D%/packages/patches/hurd-64bit.patch \
%D%/packages/patches/hurd-refcounts-assert.patch \
%D%/packages/patches/hurd-rumpdisk-no-hd.patch \
+ %D%/packages/patches/hurd-socket-activation.patch \
%D%/packages/patches/hurd-startup.patch \
%D%/packages/patches/hwloc-1-test-btrfs.patch \
%D%/packages/patches/i7z-gcc-10.patch \
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 3b02ed00d1..443001fbb7 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -319,6 +319,7 @@ Hurd-minimal package which are needed for both glibc and GCC.")
(patches (search-patches "hurd-refcounts-assert.patch"
"hurd-rumpdisk-no-hd.patch"
"hurd-startup.patch"
+ "hurd-socket-activation.patch"
"hurd-64bit.patch"))))
(version (package-version hurd-headers))
(arguments
diff --git a/gnu/packages/patches/hurd-socket-activation.patch b/gnu/packages/patches/hurd-socket-activation.patch
new file mode 100644
index 0000000000..e204a90d3a
--- /dev/null
+++ b/gnu/packages/patches/hurd-socket-activation.patch
@@ -0,0 +1,44 @@
+From 029ab7d7b38c76ba14c24fcbf526ccef29af9e88 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
+Date: Thu, 8 May 2025 23:11:36 +0200
+Subject: pflocal: Do not inherit PFLOCAL_SOCK_NONBLOCK across connect/accept.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Previously, ‘accept’ would return an O_NONBLOCK socket if the listening
+socket was O_NONBLOCK at the time the connection was made. With this
+change, ‘accept’ always returns a socket where O_NONBLOCK is cleared.
+---
+ pflocal/sock.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/pflocal/sock.c b/pflocal/sock.c
+index 90c618e..6bc061d 100644
+--- a/pflocal/sock.c
++++ b/pflocal/sock.c
+@@ -1,6 +1,6 @@
+ /* Sock functions
+
+- Copyright (C) 1995,96,2000,01,02, 2005 Free Software Foundation, Inc.
++ Copyright (C) 1995,96,2000,01,02, 2005, 2025 Free Software Foundation, Inc.
+ Written by Miles Bader <miles@gnu.org>
+
+ This program is free software; you can redistribute it and/or
+@@ -167,8 +167,11 @@ sock_clone (struct sock *template, struct sock **sock)
+ if (err)
+ return err;
+
+- /* Copy some properties from TEMPLATE. */
+- (*sock)->flags = template->flags & ~PFLOCAL_SOCK_CONNECTED;
++ /* Copy some properties from TEMPLATE. Clear O_NONBLOCK because the socket
++ returned by 'accept' must not inherit O_NONBLOCK from the parent
++ socket. */
++ (*sock)->flags =
++ template->flags & ~(PFLOCAL_SOCK_CONNECTED | PFLOCAL_SOCK_NONBLOCK);
+
+ return 0;
+ }
+--
+cgit v1.1
+