From 00dfcc6a625e6c6ed758a4b3b4d0858113508a2f Mon Sep 17 00:00:00 2001 From: Fabrice Bellet Date: Mon, 27 Nov 2017 23:56:17 +0100 Subject: [PATCH] socket: ping the stun server address on the right socket MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Verify the compatibility of the socket domain with the stun server IP address, before sending a request. Reviewed-by: Olivier Crête Differential Revision: https://phabricator.freedesktop.org/D1894 --- agent/agent.c | 12 +++++++----- agent/conncheck.c | 4 +++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/agent/agent.c b/agent/agent.c index 49fc371..3306378 100644 --- a/agent/agent.c +++ b/agent/agent.c @@ -3062,11 +3062,13 @@ nice_agent_gather_candidates ( if (nice_address_set_from_string (&stun_server, agent->stun_server_ip)) { nice_address_set_port (&stun_server, agent->stun_server_port); - priv_add_new_candidate_discovery_stun (agent, - host_candidate->sockptr, - stun_server, - stream, - cid); + if (nice_address_ip_version (&host_candidate->addr) == + nice_address_ip_version (&stun_server)) + priv_add_new_candidate_discovery_stun (agent, + host_candidate->sockptr, + stun_server, + stream, + cid); } } diff --git a/agent/conncheck.c b/agent/conncheck.c index 25bfd80..4d91f41 100644 --- a/agent/conncheck.c +++ b/agent/conncheck.c @@ -1459,7 +1459,9 @@ static gboolean priv_conn_keepalive_tick_unlocked (NiceAgent *agent) for (k = component->local_candidates; k; k = k->next) { NiceCandidate *candidate = (NiceCandidate *) k->data; if (candidate->type == NICE_CANDIDATE_TYPE_HOST && - candidate->transport == NICE_CANDIDATE_TRANSPORT_UDP) { + candidate->transport == NICE_CANDIDATE_TRANSPORT_UDP && + nice_address_ip_version (&candidate->addr) == + nice_address_ip_version (&stun_server)) { /* send the conncheck */ nice_debug ("Agent %p : resending STUN on %s to keep the " "candidate alive.", agent, candidate->foundation); -- 2.7.4