From 386615a1dfc21683d428b5404f5d02af5d592b25 Mon Sep 17 00:00:00 2001 From: Kevin Delisle Date: Tue, 6 Feb 2018 16:57:22 -0500 Subject: [PATCH] model: fix infinite loop on nestRemoting Prevent endless recursion on nestRemoting calls for two-way model links. --- lib/model.js | 5 ++++- test/relations.integration.js | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/model.js b/lib/model.js index 2a0e9497..f27c04ee 100644 --- a/lib/model.js +++ b/lib/model.js @@ -873,7 +873,10 @@ module.exports = function(registry) { var regExp = /^__([^_]+)__([^_]+)$/; var relation = this.relations[relationName]; - if (relation && relation.modelTo && relation.modelTo.sharedClass) { + if (relation && relation._nestRemotingProcessed) { + return; // Prevent unwanted circular traversals! + } else if (relation && relation.modelTo && relation.modelTo.sharedClass) { + relation._nestRemotingProcessed = true; var self = this; var sharedClass = this.sharedClass; var sharedToClass = relation.modelTo.sharedClass; diff --git a/test/relations.integration.js b/test/relations.integration.js index ffd822cf..0d9432b2 100644 --- a/test/relations.integration.js +++ b/test/relations.integration.js @@ -1480,6 +1480,7 @@ describe('relations - integration', function() { Book.hasMany(Page, {options: {nestRemoting: true}}); Book.hasMany(Chapter); Page.hasMany(Note); + Page.belongsTo(Book, {options: {nestRemoting: true}}); Chapter.hasMany(Note); Image.belongsTo(Book);