Index: src/backend/libpq/hba.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/libpq/hba.c,v retrieving revision 1.120 diff -u -r1.120 hba.c --- src/backend/libpq/hba.c 2 Feb 2004 16:58:30 -0000 1.120 +++ src/backend/libpq/hba.c 18 May 2004 18:59:38 -0000 @@ -1296,8 +1296,11 @@ hints.ai_addr = NULL; hints.ai_next = NULL; rc = getaddrinfo_all(remote_addr_s, ident_port, &hints, &ident_serv); - if (rc || !ident_serv) + if (rc || !ident_serv) { + if (ident_serv) + freeaddrinfo_all(hints.ai_family, ident_serv); return false; /* we don't expect this to happen */ + } hints.ai_flags = AI_NUMERICHOST; hints.ai_family = local_addr.addr.ss_family; @@ -1308,8 +1311,11 @@ hints.ai_addr = NULL; hints.ai_next = NULL; rc = getaddrinfo_all(local_addr_s, NULL, &hints, &la); - if (rc || !la) + if (rc || !la) { + if (la) + freeaddrinfo_all(hints.ai_family, la); return false; /* we don't expect this to happen */ + } sock_fd = socket(ident_serv->ai_family, ident_serv->ai_socktype, ident_serv->ai_protocol); Index: src/backend/libpq/ip.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/libpq/ip.c,v retrieving revision 1.25 diff -u -r1.25 ip.c --- src/backend/libpq/ip.c 24 Apr 2004 20:10:34 -0000 1.25 +++ src/backend/libpq/ip.c 18 May 2004 18:59:38 -0000 @@ -73,11 +73,11 @@ *result = NULL; #ifdef HAVE_UNIX_SOCKETS - if (hintp != NULL && hintp->ai_family == AF_UNIX) + if (hintp->ai_family == AF_UNIX) return getaddrinfo_unix(servname, hintp, result); #endif - /* NULL has special meaning to getaddrinfo */ + /* NULL has special meaning to getaddrinfo(). */ return getaddrinfo((!hostname || hostname[0] == '\0') ? NULL : hostname, servname, hintp, result); } Index: src/backend/libpq/pqcomm.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/libpq/pqcomm.c,v retrieving revision 1.168 diff -u -r1.168 pqcomm.c --- src/backend/libpq/pqcomm.c 12 Dec 2003 18:45:08 -0000 1.168 +++ src/backend/libpq/pqcomm.c 18 May 2004 18:59:38 -0000 @@ -251,7 +251,8 @@ ereport(LOG, (errmsg("could not translate service \"%s\" to address: %s", service, gai_strerror(ret)))); - freeaddrinfo_all(hint.ai_family, addrs); + if (addrs) + freeaddrinfo_all(hint.ai_family, addrs); return STATUS_ERROR; } Index: src/interfaces/libpq/fe-connect.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/libpq/fe-connect.c,v retrieving revision 1.269 diff -u -r1.269 fe-connect.c --- src/interfaces/libpq/fe-connect.c 24 Mar 2004 03:44:59 -0000 1.269 +++ src/interfaces/libpq/fe-connect.c 18 May 2004 18:59:42 -0000 @@ -945,7 +945,8 @@ printfPQExpBuffer(&conn->errorMessage, libpq_gettext("could not translate Unix-domain socket path \"%s\" to address: %s\n"), portstr, gai_strerror(ret)); - freeaddrinfo_all(hint.ai_family, addrs); + if (addrs) + freeaddrinfo_all(hint.ai_family, addrs); goto connect_errReturn; } Index: src/backend/postmaster/postmaster.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/postmaster/postmaster.c,v retrieving revision 1.388 diff -u -r1.388 postmaster.c --- src/backend/postmaster/postmaster.c 17 May 2004 14:35:29 -0000 1.388 +++ src/backend/postmaster/postmaster.c 18 May 2004 19:24:37 -0000 @@ -2471,10 +2471,14 @@ remote_port, sizeof(remote_port), (log_hostname ? 0 : NI_NUMERICHOST) | NI_NUMERICSERV)) { - getnameinfo_all(&port->raddr.addr, port->raddr.salen, + int ret = getnameinfo_all(&port->raddr.addr, port->raddr.salen, remote_host, sizeof(remote_host), remote_port, sizeof(remote_port), NI_NUMERICHOST | NI_NUMERICSERV); + if (ret) + ereport(WARNING, + (errmsg("getnameinfo_all() failed: %s", + gai_strerror(ret)))); } snprintf(remote_ps_data, sizeof(remote_ps_data), remote_port[0] == '\0' ? "%s" : "%s(%s)",