Cannot connect from UDP-blocking networks due to forced QUIC usage
kleinesfilmroellchen opened this issue · comments
Describe the bug
Nheko forces the use of HTTP3/QUIC. Some networks, such as the University of Stuttgart‘s eduroam implementation, block all UDP traffic, which QUIC relies on. Therefore, Nheko cannot connect from these networks, since there is no fallback to HTTP2/TCP which would succeed; other clients can connect from these networks just fine.
To Reproduce
- Be in a network that blocks all UDP traffic (I’m confident even local firewall configuration can create a test setup for this relatively easily)
- Try to connect to a relatively up-to-date Synapse server that supports HTTP3
- See that Nheko cannot connect; a “no network connection” message is visible
What happened?
No connection to Matrix homeserver; see above.
Expected behavior
Nheko should be able to connect to a homeserver using either HTTP2 or HTTP3, using the former as a fallback for (honestly stupid) networks where UDP is blocked and QUIC connections fail.
Screenshots
No response
Version
0.11.3
Operating system
Linux
Installation method
Some repository (AUR, homebrew, distribution repository, PPA, etc)
Qt version
No response
C++ compiler
No response
Desktop Environment
KDE Plasma 6
Did you use profiles?
- Profiles used?
Relevant log output
[2024-05-06 15:11:55.835] [net] [warning] Failed to retrieve backup version
[2024-05-06 15:11:55.858] [crypto] [warning] failed to update one-time keys: (connection: Couldn't connect to server)
[2024-05-06 15:11:55.881] [net] [warning] failed to retrieve profile info for @filmroellchen:chat.upi.li
[2024-05-06 15:11:55.904] [net] [warning] failed to query device keys: M_UNRECOGNIZED,0
[2024-05-06 15:11:55.904] [net] [warning] failed to query device keys: (connection: Couldn't connect to server)
Backtrace
No response
Nheko doesn't force the usage of QUIC though. It only enables it, if a server claims to support it. However, that it doesn't fall back on connection issues is a problem, yes. But that seems to be a curl issue and it only happens on distros, that enable http/3 support in curl.
See curl/curl#13162 for example.