Closed streaps closed 5 years ago
This is an issue with mumble-web-proxy.
It's quality is currently only barely at PoC level. Properly handling invalid data should be fairly easy though. I just haven't gotten around to it because it wasn't necessary for the PoC (so atm they just crash the program rather than causing undefined behavior) and I'd rather replace the lib used for ICE first (because those are badly written and unmaintained C bindings and could potentially cause more serious issues than just panics).
I wouldn't recommend running this in production until both of above issues are fixed. I'll keep this issue open as a reminder until then.
Turns out this particular panic was actually caused by the websocket
crate and looking at its issue tracker, there are similar issues (some of which unresolved for over a year already), so I've decided to switch to tungstenite
as the websocket server implementation (above commit).
I've also replaced the lib used for ICE with a new one and cleaned up the message parsing and related error handling.
While I wouldn't call this production ready quite yet (I ran it like ten times, and only with FF; more testing is definitely welcome), it should stop crashing constantly now and I am considering replacing my demo server's websockify and hosting a demo instance of mumble-web's webrtc
branch (actually, I still need to implement NAT-related features before I can do that).
It's very easy to crash mumble-web-proxy over the network:
nc localhost 64737 STRG-C
It immediately crashes when netcat closes the connection.
I'm not sure if this is a mumble-web-proxy bug, a bug in some rust library or something else.