summaryrefslogtreecommitdiff
path: root/agent/conncheck.c
diff options
context:
space:
mode:
authorYouness Alaoui <youness.alaoui@collabora.co.uk>2014-04-08 21:42:02 -0400
committerOlivier CrĂȘte <olivier.crete@ocrete.ca>2014-05-15 09:44:00 -0400
commit99d6f661550754c09bd1299f0139aad53af262cf (patch)
tree6f8557f6974e501f0daba52e1a2b6c47182d009a /agent/conncheck.c
parent72dda7df13e3b179f6d37c55a2340a082c86c06b (diff)
downloadlibnice-99d6f661550754c09bd1299f0139aad53af262cf.tar.gz
Do not add server-reflexive from TURN if using a TCP connection
Diffstat (limited to 'agent/conncheck.c')
-rw-r--r--agent/conncheck.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/agent/conncheck.c b/agent/conncheck.c
index 901d16b..36ed65e 100644
--- a/agent/conncheck.c
+++ b/agent/conncheck.c
@@ -2484,14 +2484,20 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage *
/* We also received our mapped address */
nice_address_set_from_sockaddr (&niceaddr, &sockaddr.addr);
- discovery_add_server_reflexive_candidate (
- d->agent,
- d->stream->id,
- d->component->id,
- &niceaddr,
- NICE_CANDIDATE_TRANSPORT_UDP,
- d->nicesock,
- FALSE);
+ /* TCP or TLS TURNS means the server-reflexive address was
+ * on a TCP connection, which cannot be used for server-reflexive
+ * discovery of candidates.
+ */
+ if (d->turn->type == NICE_RELAY_TYPE_TURN_UDP) {
+ discovery_add_server_reflexive_candidate (
+ d->agent,
+ d->stream->id,
+ d->component->id,
+ &niceaddr,
+ NICE_CANDIDATE_TRANSPORT_UDP,
+ d->nicesock,
+ FALSE);
+ }
}
nice_address_set_from_sockaddr (&niceaddr, &relayaddr.addr);