4e5c7a02db06127b4b7fb0e90c788e0036aa0652
Core recovery could never succeed, and every attempt left a live
libxray.so behind.
startCore() calls startTimer(), which builds a CountDownTimer and so a
Handler on the calling thread. handleXrayCoreExit() runs recovery on a
bare Thread, so the constructor threw "Can't create handler inside
thread ... that has not called Looper.prepare()" and took the whole
restart down with it. The catch then deleted the ephemeral config and
returned false without killing the process pb.start() had already
started, so each retry stranded another core.
Measured on an emulator by killing the live core:
before 1 -> 5 -> 6 -> 8 processes over 120 s, never recovers
after "Xray core recovered without dropping TUN" on attempt 1,
exactly 1 process
startTimer now posts to the main looper, re-checking RUNTIME_TOKEN
inside the post so a stop that lands while it is queued cannot leave a
timer running for a dead generation. stopTimer posts too, so the
countDownTimer field is only touched from one thread. The catch clears
xrayProcess before destroying it, so the monitor thread's
`xrayProcess === process` guard fails and recovery is not re-entered
for a core being killed here.
Pre-existing on main; reachable whenever the core exits.
Co-Authored-By: Claude Opus 5 <[email protected]>
ReVoltVPN
A free VPN app for Android. Open-source client, transparent infrastructure. Watch an ad, get 2 hours of full-speed traffic — no accounts, no logs, no subscriptions.
How it works
- Watch a short rewarded ad
- Server creates a temporary VLESS session (2 hours / 10 GB)
- Your traffic routes through a single server in Finland at full speed
- When time or data runs out, session ends — watch another ad to continue
- No throttling, no slow lane, no mid-session punishment
No email. No password. No payment. The ad pays for the server.
Protocol
- Transport — VLESS over XHTTP (HTTP/2 multiplexed, path-hidden behind
/revolt) - Obfuscation — Xray Reality spoofs a real website's TLS. To any DPI box, your tunnel looks like a browser visiting that website
- Encryption — TLS 1.3 with borrowed certificate (Reality). No certbot, no domain ownership required
- API — Standard HTTPS to a separate domain. Tunnel destination is IP-pinned — domain compromise is DoS only
Stack
| Layer | Technology |
|---|---|
| App | Flutter (Android) |
| VPN | VLESS + Xray Reality + XHTTP |
| Backend | Python Flask ("Hivemind") — session management, quotas, stats |
| Ads | Google AdMob rewarded, verified server-side |
| Server | Debian, single Hetzner box in Finland |
Limitations
- One server, one location (Finland)
- 2 vCPU / 4 GB RAM — not built for thousands of concurrent users
- Android only
Privacy
Your traffic routes through Finland. We don't log it, inspect it, or sell it. Hivemind tracks only session liveness and byte counters for quota enforcement — no packet contents, no destination IPs, no DNS queries.
Full privacy policy: PRIVACY_POLICY.md
ReVoltVPN is not affiliated with any VPN company.
Description
A simple vless client built with flutter
12 MiB
0 Stars
1 Watchers
0 Forks
