From 065b51ab15335b6e72eb592b2e7b351470d25938 Mon Sep 17 00:00:00 2001 From: "Brian R. Bondy" Date: Thu, 18 May 2017 17:15:58 -0400 Subject: [PATCH] Handle query values as objects for cached parsed urls Fix #8938 Auditors: @bsclifton This shouldn't be happening but Sriram got a crash with it, so handling query as an object --- app/common/lib/siteSuggestions.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/common/lib/siteSuggestions.js b/app/common/lib/siteSuggestions.js index 3bbdbb44f23..f826ccf9f33 100644 --- a/app/common/lib/siteSuggestions.js +++ b/app/common/lib/siteSuggestions.js @@ -84,6 +84,14 @@ const tokenizeInput = (data) => { parts = parts.concat(parsedUrl.pathname.split(/[.\s\\/]/)) } if (parsedUrl.query) { + // I think fast-url-parser has a bug in it where it returns an object for query + // instead of a string. Object is supported but only when you pass in true + // for the second value of parse which we don't do. + // We can remove this when we change away from using fast-url-parser in favour of the + // Chrome URL parser. + if (parsedUrl.query.constructor !== String) { + parsedUrl.query = Object.entries(parsedUrl.query).map((x) => x.join('=')).join('&') + } parts = parts.concat(parsedUrl.query.split(/[&=]/)) } if (parsedUrl.protocol) {