Skip to content

v1.9.0 - HTTP/2 & HTTP/3 support for DoH

Choose a tag to compare

@33xception 33xception released this 26 Apr 06:51
· 14 commits to master since this release

🌐 Multiple DoH Versions (HTTP/1.1, HTTP/2, HTTP/3) with Auto‑Negotiation

phantomd now supports all major DoH protocols: classic HTTP/1.1, modern HTTP/2 (via httpx), and cutting‑edge HTTP/3 (via QUIC). The new auto mode automatically probes and remembers the best version per upstream, so your server always uses the fastest available transport without manual tuning.


✨ Added

  • DoH version selection – new global doh_version option in [advanced] and per‑upstream doh_version key for [upstreams.xxx]. Supported values:
    auto (probe best), 1.1 (classic), 2 (HTTP/2), 3 (HTTP/3).
    auto is the default; falls back gracefully through 3 → 2 → 1.1.
  • DoH/3 (HTTP/3) implementation using aioquic.h3 – DNS queries sent via QUIC with proper HTTP/3 framing.
  • DoH/2 (HTTP/2) implementation using httpx – persistent, multiplexed connections for lower latency.
  • Auto‑negotiation cache – probed version is remembered for doh_auto_cache_ttl seconds (default 3600). Hot‑reloadable.
  • HTTP/1.1 DoH retained for compatibility and fallback.
  • New tests – 5 tests covering auto‑probing, version caching, fallback, explicit version override, and config hot‑reload. Total test suite: 116 tests.

🛠️ Changed

  • _forward_https now dispatches to _forward_https1, _forward_https2, or _forward_https3 based on the resolved version.
  • Configuration now supports doh_version and doh_auto_cache_ttl options in [advanced], plus per‑upstream doh_version.

📦 Upgrading

  • Update: ./installer.sh --update then systemctl restart phantomd
  • Fresh install: ./installer.sh
  • To use HTTP/2, ensure httpx with H2 support is installed.
  • To use HTTP/3, ensure aioquic is installed (same as for DoQ).

Full Changelog: v1.8.0...v1.9.0