As reported by a user on Reddit, Mumble forces TCP mode via proxies even when the proxy should in theory support UDP tunnelling. It looks like since Qt-4.8 (which I think is our earliest supported version of Qt?), this is supported, but I haven't dug in to see what work is actually required to support it (at the moment it looks like, from a cursory search, that anything but "Direct Connection" in the proxy box forces the client to force TCP mode).
It should hopefully be as simply as querying the capabilities enum on QNetworkProxy for UdpTunnelingCapability, and forcing TCP if not. I think if we don't automatically force TCP, Qt's code should do most of the heavy lifting for us.
There's still lots that can go wrong, for example binding UDP ports can fail and so on, so it's probably a nightmare and not as simple as the user and I seem to think it is.
As reported by a user on Reddit, Mumble forces TCP mode via proxies even when the proxy should in theory support UDP tunnelling. It looks like since Qt-4.8 (which I think is our earliest supported version of Qt?), this is supported, but I haven't dug in to see what work is actually required to support it (at the moment it looks like, from a cursory search, that anything but "Direct Connection" in the proxy box forces the client to force TCP mode).
It should hopefully be as simply as querying the capabilities enum on QNetworkProxy for
UdpTunnelingCapability
, and forcing TCP if not. I think if we don't automatically force TCP, Qt's code should do most of the heavy lifting for us.There's still lots that can go wrong, for example binding UDP ports can fail and so on, so it's probably a nightmare and not as simple as the user and I seem to think it is.