MINOR: proto_ux: ability to dump ABNS names in error messages
In sock_unix_bind_receiver(), uxst_bind_listener() and uxdg_bind_listener(),
properly dump ABNS socket names by leveraging sa2str() function which does the
hard work for us.
UNIX sockets are reported as is (unchanged) while ABNS UNIX sockets
are prefixed with 'abns@' to match the syntax used in config file.
(they where previously showing as empty strings because of the leading
NULL-byte that was not properly handled in this case)
This is only a minor debug improvement, however it could be useful to
backport it up to 2.4.
[for 2.4: you should replace "%s [%s]" by "%s for [%s]" for uxst and uxgd if
you wan't the patch to apply properly]
(cherry picked from commit de63efba5ad3c2ceb5942d0cb078c0fa823d93c9)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit c1a8465bbc4294e0b40c3feb0aa42615e903f5b7)
Signed-off-by: Amaury Denoyelle <adenoyelle@haproxy.com>
(cherry picked from commit f31ff9e8772e2138d65fb6ddb02935ce5b06b9ef)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit ccc7aacb6ae2b1a27941cc3504de2771e107b80c)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/proto_uxdg.c b/src/proto_uxdg.c
index 36f4c59..b4583c5 100644
--- a/src/proto_uxdg.c
+++ b/src/proto_uxdg.c
@@ -30,6 +30,7 @@
#include <haproxy/protocol.h>
#include <haproxy/sock.h>
#include <haproxy/sock_unix.h>
+#include <haproxy/tools.h>
static int uxdg_bind_listener(struct listener *listener, char *errmsg, int errlen);
static void uxdg_enable_listener(struct listener *listener);
@@ -103,8 +104,11 @@
uxdg_return:
if (msg && errlen) {
- const char *path = ((struct sockaddr_un *)&listener->rx.addr)->sun_path;
- snprintf(errmsg, errlen, "%s [%s]", msg, path);
+ char *path_str;
+
+ path_str = sa2str((struct sockaddr_storage *)&listener->rx.addr, 0, 0);
+ snprintf(errmsg, errlen, "%s for [%s]", msg, ((path_str) ? path_str : ""));
+ ha_free(&path_str);
}
return err;
}
diff --git a/src/proto_uxst.c b/src/proto_uxst.c
index 0872966..121450b 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -143,8 +143,11 @@
close(fd);
uxst_return:
if (msg && errlen) {
- const char *path = ((struct sockaddr_un *)&listener->rx.addr)->sun_path;
- snprintf(errmsg, errlen, "%s [%s]", msg, path);
+ char *path_str;
+
+ path_str = sa2str((struct sockaddr_storage *)&listener->rx.addr, 0, 0);
+ snprintf(errmsg, errlen, "%s for [%s]", msg, ((path_str) ? path_str : ""));
+ ha_free(&path_str);
}
return err;
}
diff --git a/src/sock_unix.c b/src/sock_unix.c
index 9b60a61..d62c164 100644
--- a/src/sock_unix.c
+++ b/src/sock_unix.c
@@ -338,8 +338,13 @@
unlink(backname);
bind_return:
if (errmsg && *errmsg) {
- if (!ext)
- memprintf(errmsg, "%s [%s]", *errmsg, path);
+ if (!ext) {
+ char *path_str;
+
+ path_str = sa2str((struct sockaddr_storage *)&rx->addr, 0, 0);
+ memprintf(errmsg, "%s [%s]", *errmsg, ((path_str) ? path_str : ""));
+ ha_free(&path_str);
+ }
else
memprintf(errmsg, "%s [fd %d]", *errmsg, fd);
}