diff options
author | bobzel <zzzman@gmail.com> | 2020-09-28 00:06:02 -0400 |
---|---|---|
committer | bobzel <zzzman@gmail.com> | 2020-09-28 00:06:02 -0400 |
commit | 8513eaae38d1cc4e8e9b30f656a4e58d22167351 (patch) | |
tree | 5815431cdbca2d7f6b06fa66f7cc7f12793a7f1d /src/server/ApiManagers/SearchManager.ts | |
parent | 544577e1bc1611c8de1863d2a78458808ea05851 (diff) |
fixing search to handle bad regexps without killing the server. fixed search to not loop forever on bad searches that return nothing.
Diffstat (limited to 'src/server/ApiManagers/SearchManager.ts')
-rw-r--r-- | src/server/ApiManagers/SearchManager.ts | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/server/ApiManagers/SearchManager.ts b/src/server/ApiManagers/SearchManager.ts index a52430ee8..531f3706c 100644 --- a/src/server/ApiManagers/SearchManager.ts +++ b/src/server/ApiManagers/SearchManager.ts @@ -47,13 +47,20 @@ export class SearchManager extends ApiManager { const resObj: { ids: string[], numFound: number, lines: string[] } = { ids: [], numFound: 0, lines: [] }; let results: any; const dir = pathToDirectory(Directory.text); - results = await findInFiles.find({ 'term': q, 'flags': 'ig' }, dir, ".txt$"); - for (const result in results) { - resObj.ids.push(path.basename(result, ".txt").replace(/upload_/, "")); - resObj.lines.push(results[result].line); - resObj.numFound++; + try { + const regex = new RegExp(q.toString()); + results = await findInFiles.find({ 'term': q, 'flags': 'ig' }, dir, ".txt$"); + for (const result in results) { + resObj.ids.push(path.basename(result, ".txt").replace(/upload_/, "")); + resObj.lines.push(results[result].line); + resObj.numFound++; + } + res.send(resObj); + } catch (e) { + console.log("textsearch: received bad RegExp" + q.toString()) + res.send([]); + return; } - res.send(resObj); } }); |