X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/11996ba4147678c1d400dcc16e33d83a9a3ede9c..9e78f1af54f2c8b7abfbe6ffe2dfbd26e98672c2:/cluster.c diff --git a/cluster.c b/cluster.c index cf65972..78de01b 100644 --- a/cluster.c +++ b/cluster.c @@ -1018,54 +1018,27 @@ static int type_changed(int type, int id) { int i; - for (i = 0 ; i < config->cluster_num_changes ; ++i) - if ( cluster_changes[i].id == id && - cluster_changes[i].type == type) - return 0; // Already marked for change. - - cluster_changes[i].type = type; - cluster_changes[i].id = id; - ++config->cluster_num_changes; - - if (config->cluster_num_changes > MAX_CHANGES) - cluster_heartbeat(); // flush now - - return 1; -} - -// The deleted session, must be before the new session -int cluster_listinvert_session(int sidnew, int sidtodel) -{ - int i, inew = 0; - for (i = 0 ; i < config->cluster_num_changes ; ++i) { - if ( cluster_changes[i].id == sidtodel && cluster_changes[i].type == C_CSESSION) - return 0; // Deleted session already before the new session. - - if ( cluster_changes[i].id == sidnew && cluster_changes[i].type == C_CSESSION) + if ( cluster_changes[i].id == id && cluster_changes[i].type == type) { - if (session[i].tunnel != T_FREE) - inew = i; - else - return 0; // This a free session no invert. - + // Already marked for change, remove it + --config->cluster_num_changes; + memmove(&cluster_changes[i], + &cluster_changes[i+1], + (config->cluster_num_changes - i) * sizeof(cluster_changes[i])); break; } } - for ( ; i < config->cluster_num_changes ; ++i) - { - if ( cluster_changes[i].id == sidtodel && cluster_changes[i].type == C_CSESSION) - { - // Reverse position - cluster_changes[i].id = sidnew; - cluster_changes[inew].id = sidtodel; - return 1; - } - } + cluster_changes[config->cluster_num_changes].type = type; + cluster_changes[config->cluster_num_changes].id = id; + ++config->cluster_num_changes; - return 0; + if (config->cluster_num_changes > MAX_CHANGES) + cluster_heartbeat(); // flush now + + return 1; } // A particular session has been changed!