pgpool2.git / summary / log / commit / refs
commit b51591a03ecc6718b0f0be1a5bcf4e45a1186ae2
Author: Yugo Nagata <nagata@sraoss.co.jp>
Date: Wed Dec 12 10:11:21 2012 +0000
Fix to print error message when the port number for watchdog is already used.
This issue was reported by Will Ferguson.
Subject: [pgpool-general: 1167] Re: Watchdog error - wd_init: delegate_IP already exists
watchdog/wd_packet.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/watchdog/wd_packet.c b/watchdog/wd_packet.c
index 201f64ccb..a821be0c0 100644
--- a/watchdog/wd_packet.c
+++ b/watchdog/wd_packet.c
@@ -154,16 +154,19 @@ wd_create_send_socket(char * hostname, int port)
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
/* socket create failed */
+ pool_error("wd_create_send_socket: Failed to create socket. reason: %s", strerror(errno));
return -1;
}
/* set socket option */
if ( setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *) &one, sizeof(one)) == -1 )
{
+ pool_error("wd_create_send_socket: setsockopt(TCP_NODELAY) failed. reason: %s", strerror(errno));
return -1;
}
if ( setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char *) &one, sizeof(one)) == -1 )
{
+ pool_error("wd_create_send_socket: setsockopt(SO_KEEPALIVE) failed. reason: %s", strerror(errno));
return -1;
}
@@ -260,29 +263,34 @@ wd_create_recv_socket(int port)
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
/* socket create failed */
+ pool_error("wd_create_recv_socket: Failed to create socket. reason: %s", strerror(errno));
return -1;
}
if ( fcntl(sock, F_SETFL, O_NONBLOCK) == -1)
{
/* failed to set nonblock */
+ pool_error("wd_create_recv_socket: Failed to set nonblock. reason: %s", strerror(errno));
close(sock);
return -1;
}
if ( setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) &one, sizeof(one)) == -1 )
{
/* setsockopt(SO_REUSEADDR) failed */
+ pool_error("wd_create_recv_socket: setspockopt(SO_REUSEADDR) failed. reason: %s", strerror(errno));
close(sock);
return -1;
}
if ( setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *) &one, sizeof(one)) == -1 )
{
/* setsockopt(TCP_NODELAY) failed */
+ pool_error("wd_create_recv_socket: setsockopt(TCP_NODELAY) failed. reason: %s", strerror(errno));
close(sock);
return -1;
}
if ( setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char *) &one, sizeof(one)) == -1 )
{
/* setsockopt(SO_KEEPALIVE) failed */
+ pool_error("wd_create_recv_socket: setsockopt(SO_KEEPALIVE) failed. reason: %s", strerror(errno));
close(sock);
return -1;
}
@@ -295,6 +303,13 @@ wd_create_recv_socket(int port)
if ( bind(sock, (struct sockaddr *) & addr, len) < 0 )
{
/* bind failed */
+ 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("wd_create_recv_socket: bind(%s:%s) failed. reason: %s", host, serv, strerror(errno));
close(sock);
return -1;
}
@@ -302,6 +317,7 @@ wd_create_recv_socket(int port)
if ( listen(sock, MAX_WATCHDOG_NUM * 2) < 0 )
{
/* listen failed */
+ pool_error("wd_create_recv_socket: listen() failed. reason: %s", strerror(errno));
close(sock);
return -1;
}
[parent: ab062896a5c1]