diff --git a/ccs/daemon/ccsd.c b/ccs/daemon/ccsd.c index f2325fd..82d7bae 100644 --- a/ccs/daemon/ccsd.c +++ b/ccs/daemon/ccsd.c @@ -57,6 +57,7 @@ int main(int argc, char *argv[]){ struct sockaddr_storage addr; struct sockaddr_in *addr4 = (struct sockaddr_in *)&addr; struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&addr; + char addrbuf[64], *res; int addr_size=0; fd_set rset, tmp_set; char *msg; @@ -124,9 +125,22 @@ int main(int argc, char *argv[]){ inet_aton("127.0.0.1", (struct in_addr *)&(addr4->sin_addr.s_addr)); addr4->sin_port = htons(frontend_port); } - if(bind(sfds[0], (struct sockaddr *)&addr, addr_size) < 0){ - log_sys_err("Unable to bind socket"); + if(IPv6) { + res = inet_ntop(AF_INET6,&addr6->sin6_addr, addrbuf, sizeof(addrbuf)); + if (!res) { + log_sys_err("Unable to bind socket addr: %s, port: %d, scope: %d", addrbuf, addr6->sin6_port, addr6->sin6_scope_id); + } else { + log_sys_err("Unable to bind to ipv6 frontend socket, but inet_ntop returned NULL pointer"); + } + } else { + res = inet_ntop(AF_INET,&addr4->sin_addr, addrbuf, sizeof(addrbuf)); + if (!res) { + log_sys_err("Unable to bind socket addr: %s, port: %d, proto: %d", addrbuf, addr4->sin_port, addr4->sin_family); + } else { + log_sys_err("Unable to bind to ipv4 frontend socket, but inet_ntop returned NULL pointer"); + } + } close(sfds[0]); exit(EXIT_FAILURE); } @@ -158,7 +172,21 @@ int main(int argc, char *argv[]){ } if(bind(sfds[1], (struct sockaddr *)&addr, addr_size) < 0){ - log_sys_err("Unable to bind socket"); + if(IPv6) { + res = inet_ntop(AF_INET6,&addr6->sin6_addr, addrbuf, sizeof(addrbuf)); + if (!res) { + log_sys_err("Unable to bind socket addr: %s, port: %d, scope: %d", addrbuf, addr6->sin6_port, addr6->sin6_scope_id); + } else { + log_sys_err("Unable to bind to backend ipv6 socket, but inet_ntop returned NULL pointer"); + } + } else { + res = inet_ntop(AF_INET,&addr4->sin_addr, addrbuf, sizeof(addrbuf)); + if (!res) { + log_sys_err("Unable to bind socket addr: %s, port: %d, proto: %d", addrbuf, addr4->sin_port, addr4->sin_family); + } else { + log_sys_err("Unable to bind to backend ipv4 socket, but inet_ntop returned NULL pointer"); + } + } close(sfds[1]); return -errno; } diff --git a/ccs/daemon/cnx_mgr.c b/ccs/daemon/cnx_mgr.c index 6366e4b..078df85 100644 --- a/ccs/daemon/cnx_mgr.c +++ b/ccs/daemon/cnx_mgr.c @@ -167,7 +167,7 @@ static int broadcast_for_doc(char *cluster_name, int blocking){ int trueint; int v1, v2; int write_to_disk = 0; - char *tmp_name = NULL; + char *tmp_name = NULL, addrbuf[64], *res; struct sockaddr_storage addr, recv_addr; struct sockaddr_in *addr4 = (struct sockaddr_in *)&addr; struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&addr; @@ -297,7 +297,23 @@ static int broadcast_for_doc(char *cluster_name, int blocking){ if(sendto(sfd, (char *)ch, sizeof(comm_header_t), 0, (struct sockaddr *)&addr, addr_size) < 0){ - log_sys_err("Unable to perform sendto"); + + if(IPv6) { + res = inet_ntop(AF_INET6,&addr6->sin6_addr, addrbuf, sizeof(addrbuf)); + if (!res) { + log_sys_err("Unable to perform sendto addr: %s, port: %d, scope: %d", addrbuf, addr6->sin6_port, addr6->sin6_scope_id); + } else { + log_sys_err("Unable to sendto broadcast ipv6 socket, but inet_ntop returned NULL pointer"); + } + } else { + res = inet_ntop(AF_INET,&addr4->sin_addr, addrbuf, sizeof(addrbuf)); + if (!res) { + log_sys_err("Unable to perform sendto addr: %s, port: %d, proto: %d", addrbuf, addr4->sin_port, addr4->sin_family); + } else { + log_sys_err("Unable to sendto broadcast ipv4 socket, but inet_ntop returned NULL pointer"); + } + } + if(retry > 0){ retry--; close(sfd);