]> granicus.if.org Git - pgbouncer/commitdiff
dns_callback: restore ipv6 branch
authorMarko Kreen <markokr@gmail.com>
Tue, 1 Nov 2011 22:28:49 +0000 (00:28 +0200)
committerMarko Kreen <markokr@gmail.com>
Tue, 1 Nov 2011 22:28:49 +0000 (00:28 +0200)
seems it was lost during merge.

src/objects.c

index 614d1fdb2b9f5ed04955653502933bdf3740b132..a2f7bd63ce29e61c0e74d5d92d3159f3b7d47844 100644 (file)
@@ -844,6 +844,7 @@ static void dns_callback(void *arg, const struct sockaddr *sa, int salen)
        struct PgSocket *server = arg;
        struct PgDatabase *db = server->pool->db;
        struct sockaddr_in sa_in;
+       struct sockaddr_in6 sa_in6;
 
        server->dns_token = NULL;
 
@@ -858,8 +859,16 @@ static void dns_callback(void *arg, const struct sockaddr *sa, int salen)
                salen = sizeof(sa_in);
                slog_debug(server, "dns_callback: inet4: %s",
                           sa2str(sa, buf, sizeof(buf)));
+       } else if (sa->sa_family == AF_INET6) {
+               char buf[64];
+               memcpy(&sa_in6, sa, sizeof(sa_in6));
+               sa_in6.sin6_port = htons(db->port);
+               sa = (struct sockaddr *)&sa_in6;
+               salen = sizeof(sa_in6);
+               slog_debug(server, "dns_callback: inet6: %s",
+                          sa2str(sa, buf, sizeof(buf)));
        } else {
-               disconnect_server(server, true, "unknown dns type");
+               disconnect_server(server, true, "unknown address family: %d", sa->sa_family);
                return;
        }