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.