From 43ba1b331c957e1f78b3309716f9bb38dfc32422 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Cyril=20Bont=C3=A9?= Date: Mon, 1 Nov 2010 19:26:01 +0100 Subject: [PATCH] [MINOR] startup: print the proxy socket which caused an error Add the address and port to the error message of the proxy socket that caused the error. This can be helpful when several listening addresses are used in a proxy. Edit: since we now also support unix sockets (which already report their path), better move the address reporting to proto_tcp.c by analogy. -Willy --- src/proto_tcp.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/proto_tcp.c b/src/proto_tcp.c index b2e4a8a8a1..3757d5631f 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -559,8 +559,22 @@ int tcp_bind_listener(struct listener *listener, char *errmsg, int errlen) fd_insert(fd); tcp_return: - if (msg && errlen) - strlcpy2(errmsg, msg, errlen); + if (msg && errlen) { + char pn[INET6_ADDRSTRLEN]; + + if (listener->addr.ss_family == AF_INET) { + inet_ntop(AF_INET, + (const void *)&((struct sockaddr_in *)&listener->addr)->sin_addr, + pn, sizeof(pn)); + snprintf(errmsg, errlen, "%s [%s:%d]", msg, pn, ntohs(((struct sockaddr_in *)&listener->addr)->sin_port)); + } + else { + inet_ntop(AF_INET6, + (const void *)&((struct sockaddr_in6 *)(&listener->addr))->sin6_addr, + pn, sizeof(pn)); + snprintf(errmsg, errlen, "%s [%s:%d]", msg, pn, ntohs(((struct sockaddr_in6 *)&listener->addr)->sin6_port)); + } + } return err; tcp_close_return: -- 2.47.2