--check now reads a reply from a plain MTProto upstream proxy instead of only sending it the
handshake, so an upstream that accepts the handshake and cannot reach Telegram fails the check.
Why
The upstream probe sent the 64-byte obfuscation handshake and returned OK without reading anything.
An accepted handshake says the socket is open, not that anything behind it works: a proxy answers one
before its own route to a data centre exists, and Telegram stays silent behind it. That is the same
trap #93 was about for the Worker tier, and the listener probe already had the cure.
Changed
require_res_pqis the exchange the listener probe performs — send a realreq_pq_multi,
decrypt the reply, requireresPQ, and report a transport error as one — extracted so both probes
share it instead of keeping two copies that can drift.probe_mtproto_proxycalls it on the plain path. A plain upstream that answers the handshake and
then nothing now fails withthe upstream proxy closed without answering — no tier reached the DC,
or with the transport error the DC sent.probe_listeneruses the same helper. Its behaviour is unchanged; the failure wording only gains
the article, so a transport error now readsthe listener reported a transport error: -404.
Notes
- The FakeTLS path is unchanged: it verifies the server's fake-TLS handshake end-to-end, and carrying a
resPQthrough that record layer needs the record framing on the probe's side. That is a further
step, not something this release guesses at. - Upstreams that could not reach a DC used to pass
--check. If your config lists an upstream proxy
that is no longer alive, this release will start reporting it.