• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / tg-spam / 32313463989
84%

Build:
DEFAULT BRANCH: master
Ran 19 Aug 2026 11:35PM UTC
Jobs 1
Files 43
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Aug 2026 11:29PM UTC coverage: 83.848% (+0.06%) from 83.787%
32313463989

push

github

web-flow
fix: lua state race, logged database credentials, cross-group dictionary delete (#439)

* fix(plugin): serialize lua checks on the shared state with the write lock

createMetaChecker took a read lock while the closure body allocates tables on
the shared *lua.LState and pushes and pops its stack. gopher-lua states are not
goroutine-safe, and Detector.Check holds only a read lock of its own, so
concurrent checks (parallel /check requests, or a busy update loop) ran the same
VM in parallel and could corrupt results or panic inside gopher-lua.

The existing concurrency test only ever had one checking goroutine, so it never
exercised this; the new test drives the same check from several goroutines and
reproduces the race without the fix.

* fix(storage): scope dictionary delete by gid

Every read on the dictionary table filters by gid, but Delete matched on id
alone while the id comes straight from the web API request body. Instances of
different groups sharing one database could therefore delete each other's stop
phrases and ignored words by passing an id from the neighbouring group.

* fix(storage): redact database credentials in logs and errors

engine.New logged the full connection URL at INFO on every connection, so any
postgres deployment printed its password on startup; makeDB repeated it at DEBUG
and in the wrapping error, and with --dbg the settings dump printed
Transient.DataBaseURL verbatim.

RedactConnURL masks userinfo passwords and sensitive query parameters for
display, and the settings dump now prints a copy carrying the masked URL. The
secret masker would not have covered that dump: it matches literal substrings,
so a percent-encoded password in the URL would have slipped through, and in
--confdb mode makeDB runs before setupLog anyway. The url.Parse failure path is
unwrapped so *url.Error does not carry the original URL back into the message.
The value handed to sqlx is unchanged.

* docs(webapi): correct the settings warning about creden... (continued)

63 of 68 new or added lines in 5 files covered. (92.65%)

2 existing lines in 1 file now uncovered.

9007 of 10742 relevant lines covered (83.85%)

234.68 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
55.58
-0.12% app/main.go
1
98.04
app/storage/engine/redact.go

Coverage Regressions

Lines Coverage ∆ File
2
94.25
-0.22% lib/tgspam/detector.go
Jobs
ID Job ID Ran Files Coverage
1 32313463989.1 19 Aug 2026 11:35PM UTC 43
83.85
GitHub Action Run
Source Files on build 32313463989
  • Tree
  • List 43
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • d26b9e91 on github
  • Prev Build on master (#32313458450)
  • Next Build on master (#32407754546)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc