You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
tauri: let the app supply the HttpClient used by the SDK (Android TLS makes the sync stream unusable otherwise) #1071
PowerSyncEnvironment::custom already accepts any HttpClient, and the powersync
crate documents that as the extension point — but the Tauri plugin does not
re-expose it, and init() takes no options. So an application can configure its
own requests and not the sync stream the SDK opens internally.
Why it matters (the case that led us here)
On Android, the default reqwest client verifies TLS with rustls-platform-verifier, and that rejects certificates which carry no OCSP
responder. Android's TrustManager mandates OCSP for revocation checking, so it
raises CertPathValidatorException: Certificate does not specify OCSP responder,
which the crate maps to Revoked:
WARN rustls_platform_verifier::verification::android] certificate was revoked:
java.security.cert.CertPathValidatorException: Certificate does not specify OCSP responder
ERROR rustls_platform_verifier::verification::android] failed to verify TLS certificate:
invalid peer certificate: Revoked
WARN powersync::sync::download::actor] Sync iteration failed, HTTP error:
error sending request for url (https://sync-…)
Modern certificates no longer ship an OCSP responder — Let's Encrypt ended OCSP
in August 2025 and Google Trust Services followed. We verified ours is genuinely
not revoked: its CRL is empty and does not contain the serial, and the edge sends OCSP response: no response sent because there is nothing to staple. Upstream
issue: rustls/rustls-platform-verifier#221 (open).
The application can work around it for its own requests by building a client
with a bundled root store, but the sync stream stays broken — so the app looks
healthy (API reachable, UI fine) while sync silently retries forever. That is a
much harder failure to diagnose than a plain TLS error.
Suggested change (additive, backwards compatible)
Store the client on PowerSync and add an init_with_client:
Activity
simolus3 commentedon Aug 18, 2026
Thanks for the report. I agree with the suggested change, a PR would be welcome!