From: Brendan O'Dea Date: Mon, 5 Jul 2004 06:54:01 +0000 (+0000) Subject: roll in Michael's "limp along" fix for when a slave drops temporarily from the mcast... X-Git-Tag: 2.2.1-2fdn3.1~19^2^2~1^2~446 X-Git-Url: http://git.sameswireless.fr/l2tpns.git/commitdiff_plain/d78201b5d724fc1927b2eb803c65a5198356ea77?ds=sidebyside;hp=a5848e393c20bd3cbeec4c553dd899d010ebda3b roll in Michael's "limp along" fix for when a slave drops temporarily from the mcast group --- diff --git a/cluster.c b/cluster.c index 3e40d45..d9c619e 100644 --- a/cluster.c +++ b/cluster.c @@ -1,6 +1,6 @@ // L2TPNS Clustering Stuff -char const *cvs_id_cluster = "$Id: cluster.c,v 1.5 2004-07-02 07:30:43 bodea Exp $"; +char const *cvs_id_cluster = "$Id: cluster.c,v 1.6 2004-07-05 06:54:01 bodea Exp $"; #include #include @@ -438,6 +438,20 @@ void cluster_check_master(void) int last_free = 0; int had_peers = have_peers; clockt t = TIME; + static int probed = 0; + + // Is the master late? If so, try probing it... + if (TIME > (config->cluster_last_hb + config->cluster_hb_timeout/8 + 11)) { + if (!probed) { + if (config->cluster_master_address) { + peer_send_message(config->cluster_master_address, + C_LASTSEEN, config->cluster_seq_number, NULL, 0); + probed = 1; + } + } + } else { // We got a recent heartbeat; reset the probe flag. + probed = 0; + } if (TIME < (config->cluster_last_hb + config->cluster_hb_timeout) ) return; // Everything's ok. return.