From 45fe295caa633d0477796a028f1e93382a2a2ce9 Mon Sep 17 00:00:00 2001 From: Vyr Cossont Date: Tue, 4 Jun 2024 02:33:39 -0700 Subject: [PATCH] Compile filter keyword regexps when touched through PutFilter or UpdateFilter (#2951) Followup to #2903 --- internal/db/bundb/filter.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/internal/db/bundb/filter.go b/internal/db/bundb/filter.go index 30a8494a7..2ac9f6a81 100644 --- a/internal/db/bundb/filter.go +++ b/internal/db/bundb/filter.go @@ -154,6 +154,13 @@ func (f *filterDB) populateFilter(ctx context.Context, filter *gtsmodel.Filter) } func (f *filterDB) PutFilter(ctx context.Context, filter *gtsmodel.Filter) error { + // Pre-compile filter keyword regular expressions. + for _, filterKeyword := range filter.Keywords { + if err := filterKeyword.Compile(); err != nil { + return gtserror.Newf("error compiling filter keyword regex: %w", err) + } + } + // Update database. if err := f.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error { if _, err := tx. @@ -225,6 +232,13 @@ func (f *filterDB) UpdateFilter( } } + // Pre-compile filter keyword regular expressions. + for _, filterKeyword := range filter.Keywords { + if err := filterKeyword.Compile(); err != nil { + return gtserror.Newf("error compiling filter keyword regex: %w", err) + } + } + // Update database. if err := f.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error { if _, err := tx.