From: Marko Kreen Date: Tue, 1 Nov 2011 22:28:49 +0000 (+0200) Subject: dns_callback: restore ipv6 branch X-Git-Tag: pgbouncer_1_5_rc1~36 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=981624ea0e1f89287ec814b181d098ea54832705;p=pgbouncer dns_callback: restore ipv6 branch seems it was lost during merge. --- diff --git a/src/objects.c b/src/objects.c index 614d1fd..a2f7bd6 100644 --- a/src/objects.c +++ b/src/objects.c @@ -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; }