From 9460ae51d2b46f3205f8cf7499cd358ab34d9afc Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Fri, 17 Mar 2017 14:22:02 +0100
Subject: [PATCH] [fix] #900 Do not ask to kick a member who is being excluded

---
 app/lib/dal/fileDAL.js | 2 +-
 app/lib/dup/indexer.js | 5 +++--
 package.json           | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/app/lib/dal/fileDAL.js b/app/lib/dal/fileDAL.js
index 1da9a1563..26ac95300 100644
--- a/app/lib/dal/fileDAL.js
+++ b/app/lib/dal/fileDAL.js
@@ -538,7 +538,7 @@ function FileDAL(params) {
     cindex = cindex.concat(yield indexer.ruleIndexGenCertificationExpiry(HEAD, that));
     mindex = mindex.concat(yield indexer.ruleIndexGenMembershipExpiry(HEAD, that));
     iindex = iindex.concat(yield indexer.ruleIndexGenExclusionByMembership(HEAD, mindex, that));
-    iindex = iindex.concat(yield indexer.ruleIndexGenExclusionByCertificatons(HEAD, cindex, conf, that));
+    iindex = iindex.concat(yield indexer.ruleIndexGenExclusionByCertificatons(HEAD, cindex, iindex, conf, that));
     mindex = mindex.concat(yield indexer.ruleIndexGenImplicitRevocation(HEAD, that));
     yield indexer.ruleIndexCorrectMembershipExpiryDate(HEAD, mindex, that);
     yield indexer.ruleIndexCorrectCertificationExpiryDate(HEAD, cindex, that);
diff --git a/app/lib/dup/indexer.js b/app/lib/dup/indexer.js
index 2d52a073b..c5aead1e7 100644
--- a/app/lib/dup/indexer.js
+++ b/app/lib/dup/indexer.js
@@ -1410,7 +1410,7 @@ const indexer = module.exports = {
   }),
 
   // BR_G95
-  ruleIndexGenExclusionByCertificatons: (HEAD, cindex, conf, dal) => co(function*() {
+  ruleIndexGenExclusionByCertificatons: (HEAD, cindex, iindex, conf, dal) => co(function*() {
     const exclusions = [];
     const expiredCerts = _.filter(cindex, (c) => c.expired_on > 0);
     for (const CERT of expiredCerts) {
@@ -1418,8 +1418,9 @@ const indexer = module.exports = {
       const just_received = _.filter(cindex, (c) => c.receiver == CERT.receiver && c.expired_on == 0);
       const non_expired_global = yield dal.cindexDAL.getValidLinksTo(CERT.receiver);
       if ((count(non_expired_global) - count(just_expired) + count(just_received)) < conf.sigQty) {
+        const isInExcluded = _.filter(iindex, (i) => i.member === false && i.pub === CERT.receiver)[0];
         const idty = yield dal.iindexDAL.getFromPubkey(CERT.receiver);
-        if (idty.member) {
+        if (!isInExcluded && idty.member) {
           exclusions.push({
             op: 'UPDATE',
             pub: CERT.receiver,
diff --git a/package.json b/package.json
index e652efbd9..7d3c0d194 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,7 @@
     "daemonize2": "0.4.2",
     "duniter-bma": "^0.2.11",
     "duniter-common": "0.1.0",
-    "duniter-crawler": "^0.2.16",
+    "duniter-crawler": "^0.2.17",
     "duniter-keypair": "^0.3.0",
     "duniter-prover": "^0.2.9",
     "event-stream": "3.3.4",
-- 
GitLab