log: wrap ipv6 address with []
authorMarko Kreen <markokr@gmail.com>
Mon, 8 Apr 2013 19:24:35 +0000 (22:24 +0300)
committerMarko Kreen <markokr@gmail.com>
Mon, 8 Apr 2013 19:24:35 +0000 (22:24 +0300)
include/bouncer.h
src/util.c

index ea62f98b0b5356af1b58f964e89df1fc7a5485ae..b3091d6056b9ac09889b234aa1a15f257044f634 100644 (file)
@@ -156,6 +156,7 @@ union PgAddr {
        struct sockaddr_ucreds scred;
 };
 
+static inline unsigned int pga_family(const PgAddr *a) { return a->sa.sa_family; }
 static inline bool pga_is_unix(const PgAddr *a) { return a->sa.sa_family == AF_UNIX; }
 
 int pga_port(const PgAddr *a);
index de0148953ad6bd0e01e169bc0722d61582c72484..79856f22a813f4d96736f0a2a2e3de1c182180ad 100644 (file)
@@ -30,12 +30,15 @@ int log_socket_prefix(enum LogLevel lev, void *ctx, char *dst, unsigned int dstl
        const char *user, *db, *host;
        char host6[PGADDR_BUF];
        int port;
+       char stype;
 
        /* no prefix */
        if (!sock)
                return 0;
 
        /* format prefix */
+       stype = is_server_socket(sock) ? 'S' : 'C';
+       port = pga_port(&sock->remote_addr);
        db = sock->pool ? sock->pool->db->name : "(nodb)";
        user = sock->auth_user ? sock->auth_user->name : "(nouser)";
        if (pga_is_unix(&sock->remote_addr)) {
@@ -49,11 +52,13 @@ int log_socket_prefix(enum LogLevel lev, void *ctx, char *dst, unsigned int dstl
        } else {
                host = pga_ntop(&sock->remote_addr, host6, sizeof(host6));
        }
-       port = pga_port(&sock->remote_addr);
 
-       return snprintf(dst, dstlen, "%c-%p: %s/%s@%s:%d ",
-                       is_server_socket(sock) ? 'S' : 'C',
-                       sock, db, user, host, port);
+       if (pga_family(&sock->remote_addr) == AF_INET6)
+               return snprintf(dst, dstlen, "%c-%p: %s/%s@[%s]:%d ",
+                       stype, sock, db, user, host, port);
+       else
+               return snprintf(dst, dstlen, "%c-%p: %s/%s@%s:%d ",
+                       stype, sock, db, user, host, port);
 }
 
 const char *bin2hex(const uint8_t *src, unsigned srclen, char *dst, unsigned dstlen)
@@ -328,11 +333,6 @@ void pga_copy(PgAddr *a, const struct sockaddr *sa)
        }
 }
 
-static inline unsigned pga_family(const PgAddr *a)
-{
-       return a->sa.sa_family;
-}
-
 int pga_cmp_addr(const PgAddr *a, const PgAddr *b)
 {
     if (pga_family(a) != pga_family(b))