github TecharoHQ/anubis v1.21.1
v1.21.1: Minfilia Warde - Echo 1

latest releases: v1.22.0-pre2, v1.22.0-pre1, v1.21.3...
one month ago
  • Expired records are now properly removed from bbolt databases (#848).
  • Fix hanging on service restart (#853)

Added

Anubis now supports the missingHeader to assert the absence of headers in requests.

New locales

Anubis now supports these new languages:

Fixes

Fix "error: can't get challenge" when details about a challenge can't be found in the server side state

v1.21.0 changed the core challenge flow to maintain information about challenges on the server side instead of only doing them via stateless idempotent generation functions and relying on details to not change. There was a subtle bug introduced in this change: if a client has an unknown challenge ID set in its test cookie, Anubis will clear that cookie and then throw an HTTP 500 error.

This has been fixed by making Anubis throw a new challenge page instead.

Fix event loop thrashing when solving a proof of work challenge

Previously the "fast" proof of work solver had a fragment of JavaScript that attempted to only post an update about proof of work progress to the main browser window every 1024 iterations. This fragment of JavaScript was subtly incorrect in a way that passed review but actually made the workers send an update back to the main thread every iteration. This caused a pileup of unhandled async calls (similar to a socket accept() backlog pileup in Unix) that caused stack space exhaustion.

This has been fixed in the following ways:

  1. The complicated boolean logic has been totally removed in favour of a worker-local iteration counter.
  2. The progress bar is updated by worker 0 instead of all workers.

Hopefully this should limit the event loop thrashing and let ia32 browsers (as well as any environment with a smaller stack size than amd64 and aarch64 seem to have) function normally when processing Anubis proof of work challenges.

Fix potential memory leak when discovering a solution

In some cases, the parallel solution finder in Anubis could cause all of the worker promises to leak due to the fact the promises were being improperly terminated. This was fixed by having Anubis debounce worker termination instead of allowing it to potentially recurse infinitely.

What's Changed

  • docs(known-instances): update list of known instances by @lotharsm in #847
  • fix(cmd/anubis): add signal handling to metrics server by @EmRowlands in #856
  • test: add i18n smoke test by @Xe in #858
  • test(ssh-ci): deflake SSH CI with exponential backoff by @Xe in #859
  • Fix broken BBolt database cleanup process by @thenickdude in #848
  • fix(localization): untranslated string in Filipino language by @hankskyjames777 in #850
  • feat(localization): Add Czech language translation by @xmorave2 in #849
  • feat(expressions): add missingHeader function to bot environment by @Xe in #870
  • build(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #871
  • build(deps-dev): bump the npm group with 3 updates by @dependabot[bot] in #872
  • build(deps): bump the gomod group with 6 updates by @dependabot[bot] in #873
  • Revert "build(deps): bump the gomod group with 6 updates" by @JasonLovesDoggo in #874
  • Remove duplicated string in Filipino language file by @searinminecraft in #875
  • fix(web): amend future leak on proof of work solution by @Xe in #879
  • fix(web/fast): remove event loop thrashing by @Xe in #880
  • Update pt-BR.json by @HQuest in #878
  • fix(lib): fix challenge issuance logic by @Xe in #881
  • Add Finnish localization by @ZerionSeven in #863
  • feat: Russian localization for Anubis by @Xe in #882
  • feat(localization): Add in Bokmål and Nynorsk translations by @turtlegarden in #855
  • chore: release v1.21.1 by @Xe in #887

New Contributors

Full Changelog: v1.21.0...v1.21.1

Don't miss a new anubis release

NewReleases is sending notifications on new releases.