From: Cyril Bonté Date: Mon, 1 Nov 2010 18:26:01 +0000 (+0100) Subject: [MINOR] startup: print the proxy socket which caused an error X-Git-Tag: v1.5-dev8~399 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=43ba1b331c957e1f78b3309716f9bb38dfc32422;p=thirdparty%2Fhaproxy.git [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 --- 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: