aboutsummaryrefslogtreecommitdiff
path: root/src/server/ApiManagers/SearchManager.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2020-09-28 00:06:02 -0400
committerbobzel <zzzman@gmail.com>2020-09-28 00:06:02 -0400
commit8513eaae38d1cc4e8e9b30f656a4e58d22167351 (patch)
tree5815431cdbca2d7f6b06fa66f7cc7f12793a7f1d /src/server/ApiManagers/SearchManager.ts
parent544577e1bc1611c8de1863d2a78458808ea05851 (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.ts19
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);
}
});