diff --git a/lib/msg-v4/tangle.js b/lib/msg-v4/tangle.js index 276a178..9e0c6fa 100644 --- a/lib/msg-v4/tangle.js +++ b/lib/msg-v4/tangle.js @@ -296,13 +296,19 @@ class Tangle { if (msgAID === msgBID) return false if (msgBID === this.#rootID) return false let toCheck = [msgBID] + const checked = new Set() while (toCheck.length > 0) { const checking = /** @type {string} */ (toCheck.shift()) + checked.add(checking) const prev = this.#prev.get(checking) if (!prev) continue - if (prev.includes(msgAID)) return true - toCheck.push(...prev) + if (prev.includes(msgAID)) { + checked.clear() + return true + } + toCheck.push(...prev.filter((p) => !checked.has(p))) } + checked.clear() return false }