mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.14k stars 1.1k forks source link

Client roaming (stay connected when network connection changes) #6427

Open blafjoll opened 1 month ago

blafjoll commented 1 month ago

Description

When the client changes ip address while connected, the user hangs, and has to wait for the 30s timeout to reconnect. This happens when mobile clients go from cellular to wifi and back.

Steps to reproduce

Connect with mobile client and turn on/off wifi or walk into/out of range of wifi.

Mumble version

No response

Mumble component

Server

OS

Linux

Reproducible?

Yes

Additional information

No response

Relevant log output

No response

Screenshots

No response

Hartmnt commented 1 month ago

I think this is an inherent property of TCP/IP and can not be solved by us.

davidebeatrici commented 1 month ago

More specifically, this is not a bug but rather a feature request: implement client roaming.

Krzmbrzl commented 1 month ago

@davidebeatrici how would that look like?

davidebeatrici commented 1 month ago

Well, both client and server need changes in order to support roaming properly (and it's quite complex to get right).

As a start, the server should detect when a client that was already connected connects again (before the timeout is triggered) and treat the situation as if nothing happened. The client should attempt to connect before the timeout is reached server-side.

Krzmbrzl commented 1 month ago

I wonder whether this might not simply be out of scope for Mumble. Sounds like an awful lot of work for a presumably rather rare edge case 🤔

Hartmnt commented 1 month ago

Just glancing over the complexity of the issue in my head, I fear that this would open a large can of worms. (Would this interfere with the TLS handshake? What happens when multiple users connect from the same IP? :thinking:)

I would say, let us consider this a feature request, but note that we would have to think this through carefully, if someone would ever try to implement this.