- 17 May, 2014 40 commits
-
-
Olivier Crête authored
We want ICE-TCP to not have reliable behavior unless the agent is reliable otherwise it will confuse existing VoIP applications.
-
Olivier Crête authored
PseudoTCP is only used if both the pseudotcp socket exists and the underlying transport is unreliable.
-
Olivier Crête authored
discovery: Make it less likely that a locally assigned remote foundation clashes with the remote one.
-
Olivier Crête authored
The RFC says that "for reflexive and relayed candidates, the STUN or TURN servers used to obtain them have the same IP address."
-
Olivier Crête authored
-
Olivier Crête authored
-
Olivier Crête authored
-
Olivier Crête authored
This signal include the whole candidate as the foundation is ambiguous.
-
Olivier Crête authored
-
Olivier Crête authored
-
Olivier Crête authored
-
Olivier Crête authored
These signals include the actual candidate instead of just the foundation which is not unique.
-
Olivier Crête authored
-
Olivier Crête authored
-
Olivier Crête authored
If the socket can't be bound, then trying another port makes sense, otherwise it doesn't.
-
Youness Alaoui authored
For TCP server reflexive candidates, since STUN can't work on TCP candidates, we will use STUN on UDP or TCP and once we get an externally mapped address, we will create a server reflexive candidate for all local TCP candidates that share the same base address, and use the same mapped port as the base addresse's port.
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
If we don't call check_connect_result on an outbound connection, then is_connected will always return FALSE. That's why we check both conditions to make sure g_socket_is_connected returns the correct result, otherwise we end up closing valid connections
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Jakub Adam authored
-
Jakub Adam authored
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
The issue here was that there would be a new turn discovery for UDP and for TCP-ACTIVE host candidates and we'd get 2 relayed addresses with the same base_addr causing two relayed candidates to have the same foundation. This causes farstream to duplicate candidates since we only expose the foundation when we signal new-candidate. This will also help later for adding turn-tcp support.
-
Youness Alaoui authored
In the case of OC2007, we must consider that the turn control messages are framed with rfc4571 and udp-turn-over-tcp only adds a single guint16 to represent turn-control or end-to-end indication. Otherwise, we will have issues with double-framing when we do the allocate directly on the udp-turn-over-tcp but we'd have no framing once we add the udp-turn socket layer on top of udp-turn-over-tcp
-
Youness Alaoui authored
-
Youness Alaoui authored
With OC2007 compat, doing a recv on the attached socket (udp-turn-over-tcp) will cause the RFC4571 to be unframed before doing the parse_recv on the udp-turn socket, which will fail. And even if that didn't fail, it would still cause the resulting data to be rfc4571 since the unframing in the agent happens before the parse_recv
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
The UDP-TURN socket layer is only added at the end after we discover the relay candidate with Allocate, but until then, we use the UDP-TURN-OVER-TCP socket layer directly, so we need to do the rfc framing for that as well, otherwise, it won't work.
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
-
Youness Alaoui authored
This is a massive commit that can't be split. We add ice-tcp support into the agent by creating local host tcp-active/tcp-passive candidates. We also need to find the local and remote candidates whenever we discover a peer-reflexive because their data is important to setup the peer-reflexive so a few changes were added to look for the local or remote candidate. For TCP-ACTIVE remote peer-reflexive candidates, we can't add conncheck pairs normally because TCP-PASSIVE (local) do not generate candidate pairs, and we also can't have a connection from any local host, so we can only create a single candidatepair with the local/remote that are connected. The pair->socket of a candidate check pair will hold the connected tcp socket (through connect for ACT or accept for PASS) and we will either have a remote or a local peer-reflexive which will create a new candidate pair, we cannot trigger checks on the initial candidate pair, we must only do it on the new check pairs. but in the case of a tcp-passive, we don't get a new local peer-reflexive candidate, so there is no new candidate with a new NiceSocket, so when we get a triggered check, we need to match it to the candidate check pair or when we select a pair, it will still use the original TCP-PASS socket. We must store the new connected tcp socket in the peer reflexive candidates since they represent that unique peer-reflx candidate's connection
-