Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TURN(S) TCP support in ice4j #241

Open
ubivent-seuffert opened this issue Nov 15, 2021 · 7 comments
Open

TURN(S) TCP support in ice4j #241

ubivent-seuffert opened this issue Nov 15, 2021 · 7 comments

Comments

@ubivent-seuffert
Copy link
Contributor

I am looking for a way to use a TURN(s) server, listening on port 443 TCP.
I wasn't able to conclude a definitive answer, but i can't seem to find a way to do it with ice4j.

Am i just looking in the wrong place or is there currently not support for TURN(s) over TCP? The actual agent components will be on a dynamic UDP port.

Thanks for your help :)

@bgrozev
Copy link
Member

bgrozev commented Nov 15, 2021

To make sure I understand correctly: you want to use ice4j to connect to a TURN server over TCP? Looking around the code and the usage in the Jitsi desktop client it looks like you should be able to just use TurnCandidateHarvester and pass a TCP TransportAddress as the turnServer parameter. But I can't tell for certain, and afaik the code hasn't been actively used in a while.

@ubivent-seuffert
Copy link
Contributor Author

To make sure I understand correctly: you want to use ice4j to connect to a TURN server over TCP? Looking around the code and the usage in the Jitsi desktop client it looks like you should be able to just use TurnCandidateHarvester and pass a TCP TransportAddress as the turnServer parameter. But I can't tell for certain, and afaik the code hasn't been actively used in a while.

i tried and also looked at the code. i think it wants a component that is also TCP (instead of UDP) which does not work in my case. also it needs to be a TURNS (with SSL) instead of TURN

@bgrozev
Copy link
Member

bgrozev commented Nov 15, 2021

Ah, right. Unfortunately I don't see any code to handle TLS.

@ubivent-seuffert
Copy link
Contributor Author

thx @bgrozev for the quick answer!

so the additional things needed for this to work would be:

  1. TURN server working with a component of type UDP
  2. TURN(s) TLS support

correct? Do you have any pointers where to begin? is there already any work being done related to this?

@bgrozev
Copy link
Member

bgrozev commented Nov 15, 2021

I don't understand what you mean by "component of type UDP". An org.ice4j.ice.Component does not have an associated transport protocol, it can have candidates using both UDP and TCP.

I think the only missing part is TLS support. See for example GoogleTurnSSLCandidateHarvester (which does NOT do SSL) and the code around it (the "Google*" harvesters are for a now obsolete dialect of ICE).

I don't know of any work related to this.

@ubivent-seuffert
Copy link
Contributor Author

ubivent-seuffert commented Nov 17, 2021

I don't understand what you mean by "component of type UDP". An org.ice4j.ice.Component does not have an associated transport protocol, it can have candidates using both UDP and TCP.

I am referring to Agent.createComponent , which only allows Transport.UDP

I think the only missing part is TLS support. See for example GoogleTurnSSLCandidateHarvester (which does NOT do SSL) and the code around it (the "Google*" harvesters are for a now obsolete dialect of ICE).

Thank you, I will have a look and might start an implementation.

@bgrozev
Copy link
Member

bgrozev commented Nov 17, 2021

I am referring to Agent.createComponent , which only allows Transport.UDP

Oh, I see. Literally the only useage of this code is to throw an exception if anything but UDP is passed. I cleaned it up in #242

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants