mirror of
https://github.com/novatiq/packages.git
synced 2026-04-29 23:18:42 +01:00
haproxy: add nossl variant
According to Issue #342 here is a proposal to add a nossl variant to that builts haproxy without ssl Add pending patch from upstream - [PATCH 14/14] MEDIUM: systemd-wrapper: support multiple executable Signed-off-by: Thomas Heil <heil@terminal-consulting.de>
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
From afbfc27c0f2cac29e18f87b36335ea821c633b9d Mon Sep 17 00:00:00 2001
|
||||
From: Willy Tarreau <w@1wt.eu>
|
||||
Date: Fri, 19 Sep 2014 15:42:30 +0200
|
||||
Subject: [PATCH 14/14] MEDIUM: systemd-wrapper: support multiple executable
|
||||
versions and names
|
||||
|
||||
Having to use a hard-coded "haproxy" executable name next to the systemd
|
||||
wrapper is not always convenient, as it's sometimes desirable to run with
|
||||
multiple versions in parallel.
|
||||
|
||||
Thus this patch performs a minor change to the wrapper : if the name ends
|
||||
with "-systemd-wrapper", then it trims that part off and what remains
|
||||
becomes the target haproxy executable. That makes it easy to have for
|
||||
example :
|
||||
|
||||
haproxy-1.5.4-systemd-wrapper haproxy-1.5.4
|
||||
haproxy-1.5.3-systemd-wrapper haproxy-1.5.3
|
||||
|
||||
and so on, in a same directory.
|
||||
|
||||
This patch also fixes a rare bug caused by readlink() not adding the
|
||||
trailing zero and leaving possible existing contents, including possibly
|
||||
a randomly placed "/" which would make it unable to locate the correct
|
||||
binary. This case is not totally unlikely as I got a \177 a few times
|
||||
at the end of the executable names, so I could have got a '/' as well.
|
||||
|
||||
Back-porting to 1.5 is desirable.
|
||||
(cherry picked from commit ceaf2aec1ec1612da461c61798e944693144bee9)
|
||||
---
|
||||
src/haproxy-systemd-wrapper.c | 27 ++++++++++++++++++++++-----
|
||||
1 file changed, 22 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/haproxy-systemd-wrapper.c b/src/haproxy-systemd-wrapper.c
|
||||
index cc8baa8..446f28f 100644
|
||||
--- a/src/haproxy-systemd-wrapper.c
|
||||
+++ b/src/haproxy-systemd-wrapper.c
|
||||
@@ -28,20 +28,36 @@ static char *pid_file = "/run/haproxy.pid";
|
||||
static int wrapper_argc;
|
||||
static char **wrapper_argv;
|
||||
|
||||
+/* returns the path to the haproxy binary into <buffer>, whose size indicated
|
||||
+ * in <buffer_size> must be at least 1 byte long.
|
||||
+ */
|
||||
static void locate_haproxy(char *buffer, size_t buffer_size)
|
||||
{
|
||||
char *end = NULL;
|
||||
+ int len;
|
||||
+
|
||||
+ len = readlink("/proc/self/exe", buffer, buffer_size - 1);
|
||||
+ if (len == -1)
|
||||
+ goto fail;
|
||||
|
||||
- if (readlink("/proc/self/exe", buffer, buffer_size) > 0)
|
||||
- end = strrchr(buffer, '/');
|
||||
+ buffer[len] = 0;
|
||||
+ end = strrchr(buffer, '/');
|
||||
+ if (end == NULL)
|
||||
+ goto fail;
|
||||
|
||||
- if (end == NULL) {
|
||||
- strncpy(buffer, "/usr/sbin/haproxy", buffer_size);
|
||||
+ if (strcmp(end + strlen(end) - 16, "-systemd-wrapper") == 0) {
|
||||
+ end[strlen(end) - 16] = '\0';
|
||||
return;
|
||||
}
|
||||
+
|
||||
end[1] = '\0';
|
||||
strncpy(end + 1, "haproxy", buffer + buffer_size - (end + 1));
|
||||
buffer[buffer_size - 1] = '\0';
|
||||
+ return;
|
||||
+ fail:
|
||||
+ strncpy(buffer, "/usr/sbin/haproxy", buffer_size);
|
||||
+ buffer[buffer_size - 1] = '\0';
|
||||
+ return;
|
||||
}
|
||||
|
||||
static void spawn_haproxy(char **pid_strv, int nb_pid)
|
||||
@@ -54,7 +70,8 @@ static void spawn_haproxy(char **pid_strv, int nb_pid)
|
||||
main_argc = wrapper_argc - 1;
|
||||
main_argv = wrapper_argv + 1;
|
||||
|
||||
- pid = fork();
|
||||
+ //pid = fork();
|
||||
+ pid=0;
|
||||
if (!pid) {
|
||||
/* 3 for "haproxy -Ds -sf" */
|
||||
char **argv = calloc(4 + main_argc + nb_pid + 1, sizeof(char *));
|
||||
--
|
||||
1.8.5.5
|
||||
|
||||
Reference in New Issue
Block a user