From 676bf54f5aafd1476cd49c845930b3ef7dcb3fbf Mon Sep 17 00:00:00 2001
From: Benoit Lavenier <benoit.lavenier@e-is.pro>
Date: Tue, 6 Jun 2023 18:35:59 +0200
Subject: [PATCH] fix(ws2p): numberOfFreeRooms() was testing a Promise as a
 boolean, so it was always true! 'freeMemberRoom' value was always used,
 instead of 'freeMirrorRoom'

---
 app/modules/ws2p/lib/WS2PCluster.ts | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/app/modules/ws2p/lib/WS2PCluster.ts b/app/modules/ws2p/lib/WS2PCluster.ts
index fe2d29e3c..9ebd0903d 100644
--- a/app/modules/ws2p/lib/WS2PCluster.ts
+++ b/app/modules/ws2p/lib/WS2PCluster.ts
@@ -572,6 +572,7 @@ export class WS2PCluster {
     const canReachClearEndpoint = ProxiesConf.canReachClearEndpoint(
       this.server.conf.proxiesConf
     );
+    const isMember = await this.server.dal.isMember(this.server.conf.pair.pub);
     peers.sort((a, b) => {
       // Top priority at our own nodes
       if (
@@ -591,12 +592,14 @@ export class WS2PCluster {
       const aNumberOfFreeRooms = this.numberOfFreeRooms(
         a,
         canReachTorEndpoint,
-        canReachClearEndpoint
+        canReachClearEndpoint,
+        isMember
       );
       const bNumberOfFreeRooms = this.numberOfFreeRooms(
         b,
         canReachTorEndpoint,
-        canReachClearEndpoint
+        canReachClearEndpoint,
+        isMember
       );
 
       if (canReachTorEndpoint) {
@@ -740,7 +743,8 @@ export class WS2PCluster {
   private numberOfFreeRooms(
     p: PeerDTO,
     canReachTorEndpoint: boolean,
-    canReachClearEndpoint: boolean
+    canReachClearEndpoint: boolean,
+    isMember: boolean
   ) {
     const api = p.getOnceWS2PEndpoint(
       canReachTorEndpoint,
@@ -764,9 +768,7 @@ export class WS2PCluster {
               freeMemberRoom,
               freeMirorRoom,
             ]: string[] = messageV2.split(":");
-            return this.server.dal.isMember(this.server.conf.pair.pub)
-              ? freeMemberRoom
-              : freeMirorRoom;
+            return isMember ? freeMemberRoom : freeMirorRoom;
           }
         }
       }
-- 
GitLab