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]