pgpool2.git / summary / log / commit / refs
commit 34ec097c3f2aa026845b1379e5915502caa2cbbb
Author: Yoshiyuki Asaba <y-asaba at pgfoundry.org>
Date: Wed Mar 12 05:00:45 2008 +0000
Improve bind(2) and unlink(2) error message.
Patch contributed by Jun Kuriyama.
main.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/main.c b/main.c
index fe6d4458b..359ec9b1c 100644
--- a/main.c
+++ b/main.c
@@ -851,7 +851,13 @@ static int create_inet_domain_socket(const char *hostname, const int port)
status = bind(fd, (struct sockaddr *)&addr, len);
if (status == -1)
{
- pool_error("bind() failed. reason: %s", strerror(errno));
+ char *host = "", *serv = "";
+ char hostname[NI_MAXHOST], servname[NI_MAXSERV];
+ if (getnameinfo((struct sockaddr *) &addr, len, hostname, sizeof(hostname), servname, sizeof(servname), 0) == 0) {
+ host = hostname;
+ serv = servname;
+ }
+ pool_error("bind(%s:%s) failed. reason: %s", host, serv, strerror(errno));
myexit(1);
}
@@ -887,7 +893,7 @@ static int create_unix_domain_socket(struct sockaddr_un un_addr_tmp)
status = bind(fd, (struct sockaddr *)&addr, len);
if (status == -1)
{
- pool_error("bind() failed. reason: %s", strerror(errno));
+ pool_error("bind(%s) failed. reason: %s", addr.sun_path, strerror(errno));
myexit(1);
}
@@ -906,6 +912,12 @@ static int create_unix_domain_socket(struct sockaddr_un un_addr_tmp)
return fd;
}
+static void myunlink(const char* path)
+{
+ if (unlink(path) == 0) return;
+ pool_error("unlink(%s) failed: %s", path, strerror(errno));
+}
+
static void myexit(int code)
{
char path[POOLMAXPATHLEN];
@@ -932,10 +944,10 @@ static void myexit(int code)
POOL_SETMASK(&UnBlockSig);
}
- unlink(un_addr.sun_path);
- unlink(pcp_un_addr.sun_path);
+ myunlink(un_addr.sun_path);
+ myunlink(pcp_un_addr.sun_path);
snprintf(path, sizeof(path), "%s/%s", pool_config->logdir, PID_FILE_NAME);
- unlink(path);
+ myunlink(path);
pool_shmem_exit(code);
exit(code);
[parent: 62bde8d092a9]