summaryrefslogtreecommitdiff
path: root/databases/pgpool-II-30/files/patch-main.c
blob: 769cba9502cf13a872ef2d6084917301aeab82a4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--- main.c.orig	2007-11-09 13:37:35.000000000 +0900
+++ main.c	2008-03-03 10:24:27.651654702 +0900
@@ -836,7 +836,13 @@
 	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(&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);
 	}
 
@@ -872,7 +878,7 @@
 	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);
 	}
 
@@ -891,6 +897,12 @@
 	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];
@@ -917,10 +929,10 @@
 		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);