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);
|