From 62fc3b9929fc59ae964cc40da42330ee69b454e4 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 19 Oct 2006 17:26:37 +0000 Subject: [PATCH] Work around reported problem that AIX's getaddrinfo() doesn't seem to zero sin_port in the returned IP address struct when servname is NULL. This has been observed to cause failure to bind the stats collection socket, and could perhaps cause other issues too. Per reports from Brad Nicholson and Chris Browne. --- src/backend/libpq/ip.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/backend/libpq/ip.c b/src/backend/libpq/ip.c index efba0753ce8..94f4d69c0ac 100644 --- a/src/backend/libpq/ip.c +++ b/src/backend/libpq/ip.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/ip.c,v 1.32.2.1 2005/11/22 18:23:09 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/ip.c,v 1.32.2.2 2006/10/19 17:26:37 tgl Exp $ * * This file and the IPV6 implementation were initially provided by * Nigel Kukard , Linux Based Systems Design @@ -75,6 +75,15 @@ pg_getaddrinfo_all(const char *hostname, const char *servname, return getaddrinfo_unix(servname, hintp, result); #endif +#ifdef _AIX + /* + * It seems AIX's getaddrinfo doesn't reliably zero sin_port when servname + * is NULL, so force the issue. + */ + if (servname == NULL) + servname = "0"; +#endif + /* NULL has special meaning to getaddrinfo(). */ return getaddrinfo((!hostname || hostname[0] == '\0') ? NULL : hostname, servname, hintp, result); -- 2.39.5