summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Normand <philn@igalia.com>2022-04-16 12:03:46 +0100
committerOlivier CrĂȘte <olivier.crete@ocrete.ca>2022-05-03 20:14:59 +0000
commitbf978f303869851a6f767dbbfb73c05c16f699bb (patch)
tree6e6f286303e5084d487ac0478acc7910bcd7d411
parent41ac7386b2d8fc2215f244e899e70e536decc83e (diff)
downloadlibnice-bf978f303869851a6f767dbbfb73c05c16f699bb.tar.gz
candidate: Add utility function to get TURN relay address
Can be useful to know which TURN server is being used as relay server for a given candidate.
-rw-r--r--agent/candidate.c11
-rw-r--r--agent/candidate.h13
-rw-r--r--docs/reference/libnice/libnice-sections.txt1
-rw-r--r--nice/libnice.sym1
4 files changed, 26 insertions, 0 deletions
diff --git a/agent/candidate.c b/agent/candidate.c
index 3b40c6c..1754324 100644
--- a/agent/candidate.c
+++ b/agent/candidate.c
@@ -463,3 +463,14 @@ nice_candidate_transport_to_string (NiceCandidateTransport transport)
g_assert_not_reached ();
}
}
+
+NICEAPI_EXPORT void
+nice_candidate_relay_address (const NiceCandidate *candidate, NiceAddress *addr)
+{
+ const NiceCandidateImpl *c = (NiceCandidateImpl *) candidate;
+
+ g_return_if_fail (candidate != NULL);
+ g_return_if_fail (candidate->type != NICE_CANDIDATE_TYPE_RELAYED);
+
+ *addr = c->turn->server;
+}
diff --git a/agent/candidate.h b/agent/candidate.h
index 76a6b0d..419a52e 100644
--- a/agent/candidate.h
+++ b/agent/candidate.h
@@ -40,6 +40,7 @@
#ifndef __LIBNICE_CANDIDATE_H__
#define __LIBNICE_CANDIDATE_H__
+#include "address.h"
#include <glib.h>
#include <glib-object.h>
@@ -254,6 +255,18 @@ nice_candidate_type_to_string (NiceCandidateType type);
const gchar *
nice_candidate_transport_to_string (NiceCandidateTransport transport);
+/**
+ * nice_candidate_relay_address:
+ * @candidate: A relay candidate
+ * @addr: The #NiceAddress to fill
+ *
+ * In case the given candidate is relayed through a TURN server, use this utility function to get
+ * its address.
+ *
+ * Since: 0.1.19
+ */
+void
+nice_candidate_relay_address (const NiceCandidate *candidate, NiceAddress *addr);
/**
* NICE_TYPE_CANDIDATE:
diff --git a/docs/reference/libnice/libnice-sections.txt b/docs/reference/libnice/libnice-sections.txt
index a26d596..d0c48e1 100644
--- a/docs/reference/libnice/libnice-sections.txt
+++ b/docs/reference/libnice/libnice-sections.txt
@@ -99,6 +99,7 @@ nice_candidate_copy
nice_candidate_equal_target
nice_candidate_transport_to_string
nice_candidate_type_to_string
+nice_candidate_relay_address
<SUBSECTION Standard>
NICE_TYPE_CANDIDATE
nice_candidate_get_type
diff --git a/nice/libnice.sym b/nice/libnice.sym
index facc386..2c8cec5 100644
--- a/nice/libnice.sym
+++ b/nice/libnice.sym
@@ -72,6 +72,7 @@ nice_candidate_transport_get_type
nice_candidate_transport_to_string
nice_candidate_type_get_type
nice_candidate_type_to_string
+nice_candidate_relay_address
nice_compatibility_get_type
nice_component_state_get_type
nice_component_state_to_string