The choice of whether or not to use this is controlled by a
RemoteConfig flag, ios.experimentalTransportEnabled.libsignal, but
because ChatConnectionManager is set up before RemoteConfig has even
loaded its cached settings, the flag is cached in UserDefaults, like
the shadowing kill switch setting.
Most requests on good networks happen well under 2sec, but there have
been a few timeouts that seem spurious (distinct from a series of
timeouts all happening in a row on the libsignal websocket).
Invoke this non-recommended mode with URL username syntax of
"UNENCRYPTED_FOR_TESTING@my-proxy.net" (or more likely
"UNENCRYPTED_FOR_TESTING@my-dev-machine.local"). The connection to the
Signal servers is still secured by TLS; it's only the outer connection
from the client to the proxy that's now unauthenticated.
This included:
- Removing unavailable inits wholesale if no longer `required`
- Marking a few classes `final` so they could continue using
`Self(...)` rather than `OWSWhatever(...)`
Also:
- Remove AtomicUInt's @objc, it's no longer used from ObjC
- Remove Codable conformances, they would implicitly use shared locks
and weren't used in practice