fishjam icon indicating copy to clipboard operation
fishjam copied to clipboard

TURN server startup race condition

Open gfodor opened this issue 1 year ago • 3 comments

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 avatar Mar 02 '24 00:03 gfodor

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

gfodor avatar Mar 02 '24 02:03 gfodor

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 avatar Mar 04 '24 19:03 mickel8

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

  • if JF_WEBRTC_USED is enabled, start one global TCP TURN
  • when a new webrtc peer connects, start a new UDP TURN server, dedicated to this peer

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:

mickel8 avatar Mar 04 '24 19:03 mickel8