Skip to content

v0.5.0 — .NET 8 modernization

Latest

Choose a tag to compare

@adamantmm adamantmm released this 07 Aug 14:05
a35b52b

First tagged release since 0.4.1 (2019). ANS now runs on .NET 8 (LTS), with native Ubuntu 22.04+ support and no EOL-library workarounds required.

Highlights

  • .NET 8 migration: netcoreapp3.0net8.0 across every project; all NuGet dependencies updated to current stable versions
  • Fixed a socket leak: AdamantApi used to allocate a new HttpClient per request and never dispose it — confirmed on production as a steady leak into CLOSE-WAIT. Now reuses a single shared client
  • Fixed missing node failover: a single unreachable ADM node used to crash the whole service; it now retries against another configured node instead
  • EF Core / MySQL provider swap: replaced the deprecated MySql.Data.EntityFrameworkCore (EF Core 2.x-only, abandoned upstream, and confirmed not to run at all on .NET 8) with Pomelo.EntityFrameworkCore.MySql on EF Core 8
  • Privacy fixes: removed three log statements that were printing a device token, a decrypted signal payload, or a certificate password
  • Graceful shutdown: both workers now handle SIGTERM cleanly instead of always exiting non-zero on docker stop/systemctl restart
  • Post-deployment hardening: fixed ~ path expansion on headless servers, a startup edge case that could burst-notify devices about old transactions, a thread-safety issue in node selection, a missing HttpClient timeout, and a null reference on an unparseable APNs error response
  • Version tracking: builds now carry a real, centralized version number (previously every build silently shipped as 1.0.0.0) and log it at startup
  • Tests: two new test projects, 35 tests total, including a runtime EF Core/SQLite smoke test that caught the .NET 8 incompatibility before it could reach production

Security

Security audited by cryptofoundry.

Upgrading

Deployment now needs the .NET 8 runtime (or a self-contained net8.0 publish) instead of the old netcoreapp3.0 setup. No configuration or database schema changes are required.

Full diff: 0.4.1...v0.5.0