]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] startup: print the proxy socket which caused an error
authorCyril Bonté <cyril.bonte@free.fr>
Mon, 1 Nov 2010 18:26:01 +0000 (19:26 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 11 Nov 2010 08:26:28 +0000 (09:26 +0100)
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

index b2e4a8a8a15b79051690e058c89a90b887143c28..3757d5631f1ae0a107039fe2674917b37e97b6d4 100644 (file)
@@ -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: