summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2003-08-12 22:42:01 +0000
committerTom Lane2003-08-12 22:42:01 +0000
commit92345910718baa4217def15e886bba10b55ed905 (patch)
treed82946e0b8bc3edf4adfc9372f3b34a5ef62ce11
parent90ade5b775cf6ca014f56848ac887029edd8670e (diff)
Include 'IPv4', 'IPv6', or 'Unix' in socket-creation failure messages,
in hopes of soothing fears of those with partial IPv6 support. Still an open question whether we should report EAFNOSUPPORT errors at all, though.
-rw-r--r--src/backend/libpq/pqcomm.c42
1 files changed, 37 insertions, 5 deletions
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index 72d444ad8f2..6d4a4ea0171 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -30,7 +30,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.164 2003/08/07 19:37:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.165 2003/08/12 22:42:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -209,7 +209,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
int maxconn;
int one = 1;
int ret;
- char portNumberStr[64];
+ char portNumberStr[32];
+ const char *familyDesc;
+ char familyDescBuf[64];
char *service;
struct addrinfo *addrs = NULL,
*addr;
@@ -276,11 +278,37 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
break;
}
+ /* set up family name for possible error messages */
+ switch (addr->ai_family)
+ {
+ case AF_INET:
+ familyDesc = gettext("IPv4");
+ break;
+#ifdef HAVE_IPV6
+ case AF_INET6:
+ familyDesc = gettext("IPv6");
+ break;
+#endif
+#ifdef HAVE_UNIX_SOCKETS
+ case AF_UNIX:
+ familyDesc = gettext("Unix");
+ break;
+#endif
+ default:
+ snprintf(familyDescBuf, sizeof(familyDescBuf),
+ gettext("unrecognized address family %d"),
+ addr->ai_family);
+ familyDesc = familyDescBuf;
+ break;
+ }
+
if ((fd = socket(addr->ai_family, SOCK_STREAM, 0)) < 0)
{
ereport(LOG,
(errcode_for_socket_access(),
- errmsg("failed to create socket: %m")));
+ /* translator: %s is IPv4, IPv6, or Unix */
+ errmsg("could not create %s socket: %m",
+ familyDesc)));
continue;
}
@@ -323,7 +351,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
{
ereport(LOG,
(errcode_for_socket_access(),
- errmsg("failed to bind server socket: %m"),
+ /* translator: %s is IPv4, IPv6, or Unix */
+ errmsg("could not bind %s socket: %m",
+ familyDesc),
(IS_AF_UNIX(addr->ai_family)) ?
errhint("Is another postmaster already running on port %d?"
" If not, remove socket node \"%s\" and retry.",
@@ -361,7 +391,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
{
ereport(LOG,
(errcode_for_socket_access(),
- errmsg("failed to listen on server socket: %m")));
+ /* translator: %s is IPv4, IPv6, or Unix */
+ errmsg("could not listen on %s socket: %m",
+ familyDesc)));
closesocket(fd);
continue;
}