fishjam-dev / fishjam

General purpose media server. Supports WebRTC, HLS, RTSP, SIP
https://fishjam-dev.github.io/fishjam-docs/
Apache License 2.0
197 stars 10 forks source link

TURN server startup race condition #163

Open gfodor opened 6 months ago

gfodor commented 6 months ago

I have a Jellyfish server with a client that auto reconnects and lazily creates a room. I noticed that if many clients are concurrently creating rooms there is a race condition trying to start the TURN server (so multiple attempts are made, and all but one fail on :eaddrinuse) - this can be mitigated by starting the TURN server first before any rooms are created.

gfodor commented 6 months ago

Ah, I think part of this might also be that when SIGTERMing jellyfish in a docker container, it looks like maybe the TURN server is not shutting down gracefully and the port is staying in TIME_WAIT

mickel8 commented 6 months ago

Hi @gfodor, I have already merged and released your PR in fake_turn as 0.4.2. I assume that this doesn't solve the problem entirely?

mickel8 commented 6 months ago

Also, do you have any logs? As far as I remember our flow is as follows:

When starting a dedicated UDP TURN server, we iterate over a range of ports and try to open until we find a free one so this should work pretty fine unless it doesn't :thinking: