From: Brendan O'Dea Date: Mon, 13 Dec 2004 05:09:55 +0000 (+0000) Subject: make cluster_sockfd non-blocking X-Git-Tag: 2.2.1-2fdn3.1~19^2^2~1^2~277 X-Git-Url: http://git.sameswireless.fr/l2tpns.git/commitdiff_plain/32fbf3a470fbdf9eac60eae6b14b7ecc99990a03?ds=sidebyside;hp=4577ff0e9b44281ffea13da2307348baff88d0b4 make cluster_sockfd non-blocking --- diff --git a/cluster.c b/cluster.c index 8295954..2a5e6e3 100644 --- a/cluster.c +++ b/cluster.c @@ -1,6 +1,6 @@ // L2TPNS Clustering Stuff -char const *cvs_id_cluster = "$Id: cluster.c,v 1.21 2004-12-09 00:38:44 bodea Exp $"; +char const *cvs_id_cluster = "$Id: cluster.c,v 1.22 2004-12-13 05:09:55 bodea Exp $"; #include #include @@ -81,7 +81,7 @@ int cluster_init() struct sockaddr_in interface_addr; struct ip_mreq mreq; struct ifreq ifr; - int opt = 0; + int opt; config->cluster_undefined_sessions = MAXSESSION-1; config->cluster_undefined_tunnels = MAXTUNNEL-1; @@ -99,6 +99,9 @@ int cluster_init() addr.sin_addr.s_addr = INADDR_ANY; setsockopt(cluster_sockfd, SOL_SOCKET, SO_REUSEADDR, &addr, sizeof(addr)); + opt = fcntl(cluster_sockfd, F_GETFL, 0); + fcntl(cluster_sockfd, F_SETFL, opt | O_NONBLOCK); + if (bind(cluster_sockfd, (void *) &addr, sizeof(addr)) < 0) { LOG(0, 0, 0, "Failed to bind cluster socket: %s\n", strerror(errno)); @@ -129,7 +132,7 @@ int cluster_init() return -1; } - if (setsockopt (cluster_sockfd, IPPROTO_IP, IP_MULTICAST_IF, &interface_addr, sizeof(interface_addr)) < 0) + if (setsockopt(cluster_sockfd, IPPROTO_IP, IP_MULTICAST_IF, &interface_addr, sizeof(interface_addr)) < 0) { LOG(0, 0, 0, "Failed to setsockopt (set mcast interface): %s\n", strerror(errno)); return -1;