]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: compat: add missing fcntl.h before defining F_SETPIPE_SZ
authorWilly Tarreau <w@1wt.eu>
Wed, 25 Dec 2024 10:53:11 +0000 (11:53 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 25 Dec 2024 10:53:11 +0000 (11:53 +0100)
n 1.5-dev8, 13 years ago, support for setting pipe size was added by
commit bd9a0a778 ("OPTIM/MINOR: make it possible to change pipe size
(tune.pipesize)"). For compatibility purposes, it was defining
F_SETPIPE_SZ in compat.h if it was not set. It apparently always had
F_SETPIPE_SZ defined before being included.

Now in 3.2-dev1, commit fbc534a6f ("REORG: startup: move nofile limit
checks in limits.c") reordered a few includes and ended up with
mworker-prog.c including compat.h before fcntl.h, causing a redefinition
error on certain libcs:

    CC      src/mworker-prog.o
  In file included from /usr/include/bits/fcntl.h:61:0,
                   from /usr/include/fcntl.h:35,
                   from include/haproxy/limits.h:11,
                   from include/haproxy/mworker.h:18,
                   from src/mworker-prog.c:27:
  /usr/include/bits/fcntl-linux.h:203:0: warning: "F_SETPIPE_SZ" redefined [enabled by default]
  In file included from include/haproxy/api-t.h:35:0,
                   from include/haproxy/api.h:33,
                   from src/mworker-prog.c:23:
  include/haproxy/compat.h:161:0: note: this is the location of the previous definition

Let's simply include fcntl.h in compat.h before the macro is redefined.

There's normally no need to backport this, though it's harmless to do
it if needed.

include/haproxy/compat.h

index 93df3d9ff0099b295b98127e4cf4c270c36cf57c..e4fec3e1b790b694a2928542829d96e6b6558a0d 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <limits.h>
 #include <unistd.h>
+#include <fcntl.h>
 /* This is needed on Linux for Netfilter includes */
 #include <sys/param.h>
 #include <sys/types.h>