From 8b5bc1f1eb4667123e9cc21168506060bcd0fb34 Mon Sep 17 00:00:00 2001 From: dogsheng <960055655@qq.com> Date: Tue, 19 Nov 2019 11:49:39 +0800 Subject: [PATCH] Package init --- libnice-0.1.14-85-g34d6044.patch | 11963 +++++++++++++++++++++++++++++ libnice-0.1.14-tests-i686.patch | 48 + libnice-0.1.14-tests-koji.patch | 36 + libnice-0.1.14-turn-verify.patch | 32 + libnice-0.1.14.tar.gz | Bin 0 -> 1024116 bytes libnice.spec | 81 + 6 files changed, 12160 insertions(+) create mode 100644 libnice-0.1.14-85-g34d6044.patch create mode 100644 libnice-0.1.14-tests-i686.patch create mode 100644 libnice-0.1.14-tests-koji.patch create mode 100644 libnice-0.1.14-turn-verify.patch create mode 100644 libnice-0.1.14.tar.gz create mode 100644 libnice.spec diff --git a/libnice-0.1.14-85-g34d6044.patch b/libnice-0.1.14-85-g34d6044.patch new file mode 100644 index 0000000..541d010 --- /dev/null +++ b/libnice-0.1.14-85-g34d6044.patch @@ -0,0 +1,11963 @@ +From a4bacb2fe2ff06ccb1a2d7f7c0b62bd41674565b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Mon, 3 Apr 2017 14:30:10 -0400 +Subject: [PATCH 01/70] Version 0.1.14.1 + +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 5fabdb4..b39bfe3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5,8 +5,8 @@ dnl Always compile with -Wall; if --enable-compile-warnings=error is passed, + dnl also use -Werror. git and pre-releases default to -Werror + + dnl use a three digit version number for releases, and four for cvs/prerelease +-AC_INIT([libnice],[0.1.14]) +-LIBNICE_RELEASE="yes" ++AC_INIT([libnice],[0.1.14.1]) ++LIBNICE_RELEASE="no" + + AC_CANONICAL_TARGET + +-- +2.13.6 + + +From 59ce41dfb837adf4222b25490cde2e394384ad15 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miguel=20Par=C3=ADs=20D=C3=ADaz?= +Date: Fri, 31 Mar 2017 20:20:38 -0400 +Subject: [PATCH 02/70] conncheck: consider answer received when remote + credentials are set +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Consider that the answer is received when remote credentials +are set instead of when a remote candidate is set, +which could not happen or could cause more delay for the +connection establishment. + +Ported to git master by Olivier Crête + +Differential Revision: https://phabricator.freedesktop.org/D1704 +--- + agent/agent.c | 4 +- + agent/conncheck.c | 225 +++++++++++++++++++++++++++--------------------------- + agent/conncheck.h | 2 +- + 3 files changed, 117 insertions(+), 114 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 555fd16..4d9381c 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3240,6 +3240,8 @@ nice_agent_set_remote_credentials ( + g_strlcpy (stream->remote_ufrag, ufrag, NICE_STREAM_MAX_UFRAG); + g_strlcpy (stream->remote_password, pwd, NICE_STREAM_MAX_PWD); + ++ conn_check_remote_credentials_set(agent, stream); ++ + ret = TRUE; + goto done; + } +@@ -3342,8 +3344,6 @@ _set_remote_candidates_locked (NiceAgent *agent, NiceStream *stream, + } + } + +- conn_check_remote_candidates_set(agent, stream, component); +- + if (added > 0) { + conn_check_schedule_next (agent); + } +diff --git a/agent/conncheck.c b/agent/conncheck.c +index dda2f2f..2abbc5e 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1243,124 +1243,124 @@ static GSList *prune_cancelled_conn_check (GSList *conncheck_list) + + /* + * Handle any processing steps for connectivity checks after +- * remote candidates have been set. This function handles ++ * remote credentials have been set. This function handles + * the special case where answerer has sent us connectivity +- * checks before the answer (containing candidate information), ++ * checks before the answer (containing credentials information), + * reaches us. The special case is documented in sect 7.2 + * if ICE spec (ID-19). + */ +-void conn_check_remote_candidates_set(NiceAgent *agent, NiceStream *stream, NiceComponent *component) ++void conn_check_remote_credentials_set(NiceAgent *agent, NiceStream *stream) + { +- GSList *j, *k, *l, *m, *n; ++ GSList *j, *k, *l, *m, *n, *o; + + for (j = stream->conncheck_list; j ; j = j->next) { + CandidateCheckPair *pair = j->data; +- if (pair->component_id == component->id) { +- gboolean match = FALSE; +- +- /* performn delayed processing of spec steps section 7.2.1.4, +- and section 7.2.1.5 */ +- priv_preprocess_conn_check_pending_data (agent, stream, component, pair); +- +- for (k = component->incoming_checks; k; k = k->next) { +- IncomingCheck *icheck = k->data; +- /* sect 7.2.1.3., "Learning Peer Reflexive Candidates", has to +- * be handled separately */ +- for (l = component->remote_candidates; l; l = l->next) { +- NiceCandidate *cand = l->data; +- if (nice_address_equal (&icheck->from, &cand->addr)) { +- match = TRUE; +- break; +- } +- } +- if (match != TRUE) { +- /* note: we have gotten an incoming connectivity check from +- * an address that is not a known remote candidate */ +- +- NiceCandidate *local_candidate = NULL; +- NiceCandidate *remote_candidate = NULL; +- +- if (agent->compatibility == NICE_COMPATIBILITY_GOOGLE || +- agent->compatibility == NICE_COMPATIBILITY_MSN || +- agent->compatibility == NICE_COMPATIBILITY_OC2007) { +- /* We need to find which local candidate was used */ +- uint8_t uname[NICE_STREAM_MAX_UNAME]; +- guint uname_len; +- +- nice_debug ("Agent %p: We have a peer-reflexive candidate in a " +- "stored pending check", agent); +- +- for (m = component->remote_candidates; +- m != NULL && remote_candidate == NULL; m = m->next) { +- for (n = component->local_candidates; n; n = n->next) { +- NiceCandidate *rcand = m->data; +- NiceCandidate *lcand = n->data; +- +- uname_len = priv_create_username (agent, stream, +- component->id, rcand, lcand, +- uname, sizeof (uname), TRUE); +- +- stun_debug ("pending check, comparing usernames of len %d and %d, equal=%d", +- icheck->username_len, uname_len, +- icheck->username && uname_len == icheck->username_len && +- memcmp (uname, icheck->username, icheck->username_len) == 0); +- stun_debug_bytes (" first username: ", +- icheck->username, +- icheck->username? icheck->username_len : 0); +- stun_debug_bytes (" second username: ", uname, uname_len); +- +- if (icheck->username && +- uname_len == icheck->username_len && +- memcmp (uname, icheck->username, icheck->username_len) == 0) { +- local_candidate = lcand; +- remote_candidate = rcand; +- break; +- } +- } +- } +- } else { +- for (l = component->local_candidates; l; l = l->next) { +- NiceCandidate *cand = l->data; +- if (nice_address_equal (&cand->addr, &icheck->local_socket->addr)) { +- local_candidate = cand; ++ NiceComponent *component = ++ nice_stream_find_component_by_id (stream, pair->component_id); ++ gboolean match = FALSE; ++ ++ /* performn delayed processing of spec steps section 7.2.1.4, ++ and section 7.2.1.5 */ ++ priv_preprocess_conn_check_pending_data (agent, stream, component, pair); ++ ++ for (k = component->incoming_checks; k; k = k->next) { ++ IncomingCheck *icheck = k->data; ++ /* sect 7.2.1.3., "Learning Peer Reflexive Candidates", has to ++ * be handled separately */ ++ for (l = component->remote_candidates; l; l = l->next) { ++ NiceCandidate *cand = l->data; ++ if (nice_address_equal (&icheck->from, &cand->addr)) { ++ match = TRUE; ++ break; ++ } ++ } ++ if (match != TRUE) { ++ /* note: we have gotten an incoming connectivity check from ++ * an address that is not a known remote candidate */ ++ ++ NiceCandidate *local_candidate = NULL; ++ NiceCandidate *remote_candidate = NULL; ++ ++ if (agent->compatibility == NICE_COMPATIBILITY_GOOGLE || ++ agent->compatibility == NICE_COMPATIBILITY_MSN || ++ agent->compatibility == NICE_COMPATIBILITY_OC2007) { ++ /* We need to find which local candidate was used */ ++ uint8_t uname[NICE_STREAM_MAX_UNAME]; ++ guint uname_len; ++ ++ nice_debug ("Agent %p: We have a peer-reflexive candidate in a " ++ "stored pending check", agent); ++ ++ for (m = component->remote_candidates; ++ m != NULL && remote_candidate == NULL; m = m->next) { ++ for (n = component->local_candidates; n; n = n->next) { ++ NiceCandidate *rcand = m->data; ++ NiceCandidate *lcand = n->data; ++ ++ uname_len = priv_create_username (agent, stream, ++ component->id, rcand, lcand, ++ uname, sizeof (uname), TRUE); ++ ++ stun_debug ("pending check, comparing usernames of len %d and %d, equal=%d", ++ icheck->username_len, uname_len, ++ icheck->username && uname_len == icheck->username_len && ++ memcmp (uname, icheck->username, icheck->username_len) == 0); ++ stun_debug_bytes (" first username: ", ++ icheck->username, ++ icheck->username? icheck->username_len : 0); ++ stun_debug_bytes (" second username: ", uname, uname_len); ++ ++ if (icheck->username && ++ uname_len == icheck->username_len && ++ memcmp (uname, icheck->username, icheck->username_len) == 0) { ++ local_candidate = lcand; ++ remote_candidate = rcand; + break; + } + } + } +- +- if (agent->compatibility == NICE_COMPATIBILITY_GOOGLE && +- local_candidate == NULL) { +- /* if we couldn't match the username, then the matching remote +- * candidate hasn't been received yet.. we must wait */ +- nice_debug ("Agent %p : Username check failed. pending check has " +- "to wait to be processed", agent); +- } else { +- NiceCandidate *candidate; +- +- nice_debug ("Agent %p : Discovered peer reflexive from early i-check", +- agent); +- candidate = +- discovery_learn_remote_peer_reflexive_candidate (agent, +- stream, +- component, +- icheck->priority, +- &icheck->from, +- icheck->local_socket, +- local_candidate, remote_candidate); +- if (candidate) { +- if (local_candidate && +- local_candidate->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE) +- priv_conn_check_add_for_candidate_pair_matched (agent, +- stream->id, component, local_candidate, candidate, NICE_CHECK_DISCOVERED); +- else +- conn_check_add_for_candidate (agent, stream->id, component, candidate); +- +- if (icheck->use_candidate) +- priv_mark_pair_nominated (agent, stream, component, local_candidate, candidate); +- priv_schedule_triggered_check (agent, stream, component, icheck->local_socket, candidate, icheck->use_candidate); ++ } else { ++ for (l = component->local_candidates; l; l = l->next) { ++ NiceCandidate *cand = l->data; ++ if (nice_address_equal (&cand->addr, &icheck->local_socket->addr)) { ++ local_candidate = cand; ++ break; + } + } + } ++ ++ if (agent->compatibility == NICE_COMPATIBILITY_GOOGLE && ++ local_candidate == NULL) { ++ /* if we couldn't match the username, then the matching remote ++ * candidate hasn't been received yet.. we must wait */ ++ nice_debug ("Agent %p : Username check failed. pending check has " ++ "to wait to be processed", agent); ++ } else { ++ NiceCandidate *candidate; ++ ++ nice_debug ("Agent %p : Discovered peer reflexive from early i-check", ++ agent); ++ candidate = ++ discovery_learn_remote_peer_reflexive_candidate (agent, ++ stream, ++ component, ++ icheck->priority, ++ &icheck->from, ++ icheck->local_socket, ++ local_candidate, remote_candidate); ++ if (candidate) { ++ if (local_candidate && ++ local_candidate->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE) ++ priv_conn_check_add_for_candidate_pair_matched (agent, ++ stream->id, component, local_candidate, candidate, NICE_CHECK_DISCOVERED); ++ else ++ conn_check_add_for_candidate (agent, stream->id, component, candidate); ++ ++ if (icheck->use_candidate) ++ priv_mark_pair_nominated (agent, stream, component, local_candidate, candidate); ++ priv_schedule_triggered_check (agent, stream, component, icheck->local_socket, candidate, icheck->use_candidate); ++ } ++ } + } + } + } +@@ -1368,9 +1368,12 @@ void conn_check_remote_candidates_set(NiceAgent *agent, NiceStream *stream, Nice + /* Once we process the pending checks, we should free them to avoid + * reprocessing them again if a dribble-mode set_remote_candidates + * is called */ +- g_slist_free_full (component->incoming_checks, +- (GDestroyNotify) incoming_check_free); +- component->incoming_checks = NULL; ++ for (o = stream->components; o; o = o->next) { ++ NiceComponent *component = o->data; ++ g_slist_free_full (component->incoming_checks, ++ (GDestroyNotify) incoming_check_free); ++ component->incoming_checks = NULL; ++ } + + stream->conncheck_list = + prune_cancelled_conn_check (stream->conncheck_list); +@@ -3628,14 +3631,14 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + if (stream->initial_binding_request_received != TRUE) + agent_signal_initial_binding_request_received (agent, stream); + +- if (component->remote_candidates && remote_candidate == NULL) { ++ if (remote_candidate == NULL) { + nice_debug ("Agent %p : No matching remote candidate for incoming check ->" + "peer-reflexive candidate.", agent); + remote_candidate = discovery_learn_remote_peer_reflexive_candidate ( + agent, stream, component, priority, from, nicesock, + local_candidate, + remote_candidate2 ? remote_candidate2 : remote_candidate); +- if(remote_candidate) { ++ if(remote_candidate && stream->remote_ufrag != NULL) { + if (local_candidate && + local_candidate->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE) { + CandidateCheckPair *pair; +@@ -3654,10 +3657,10 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + priv_reply_to_conn_check (agent, stream, component, local_candidate, + remote_candidate, from, nicesock, rbuf_len, &msg, use_candidate); + +- if (component->remote_candidates == NULL) { ++ if (stream->remote_ufrag == NULL) { + /* case: We've got a valid binding request to a local candidate +- * but we do not yet know remote credentials nor +- * candidates. As per sect 7.2 of ICE (ID-19), we send a reply ++ * but we do not yet know remote credentials. ++ * As per sect 7.2 of ICE (ID-19), we send a reply + * immediately but postpone all other processing until + * we get information about the remote candidates */ + +diff --git a/agent/conncheck.h b/agent/conncheck.h +index 431c606..10319cc 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -105,7 +105,7 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair); + void conn_check_prune_stream (NiceAgent *agent, NiceStream *stream); + gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceSocket *udp_socket, const NiceAddress *from, gchar *buf, guint len); + gint conn_check_compare (const CandidateCheckPair *a, const CandidateCheckPair *b); +-void conn_check_remote_candidates_set(NiceAgent *agent, NiceStream *stream, NiceComponent *component); ++void conn_check_remote_credentials_set(NiceAgent *agent, NiceStream *stream); + NiceCandidateTransport conn_check_match_transport (NiceCandidateTransport transport); + void + conn_check_prune_socket (NiceAgent *agent, NiceStream *stream, NiceComponent *component, +-- +2.13.6 + + +From 0de1657e4d15d4f1911ab1fad84ea23e7013070f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 12:25:50 -0400 +Subject: [PATCH 03/70] conncheck: Use the right test for empty remote_frag + +It's now an array, not a pointer, so needs to test to emptyness. + +It's a bugfix on the previous commit, 59ce41df +--- + agent/conncheck.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 2abbc5e..7096b42 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3638,7 +3638,7 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + agent, stream, component, priority, from, nicesock, + local_candidate, + remote_candidate2 ? remote_candidate2 : remote_candidate); +- if(remote_candidate && stream->remote_ufrag != NULL) { ++ if(remote_candidate && stream->remote_ufrag[0]) { + if (local_candidate && + local_candidate->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE) { + CandidateCheckPair *pair; +@@ -3657,7 +3657,7 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + priv_reply_to_conn_check (agent, stream, component, local_candidate, + remote_candidate, from, nicesock, rbuf_len, &msg, use_candidate); + +- if (stream->remote_ufrag == NULL) { ++ if (stream->remote_ufrag[0] == 0) { + /* case: We've got a valid binding request to a local candidate + * but we do not yet know remote credentials. + * As per sect 7.2 of ICE (ID-19), we send a reply +-- +2.13.6 + + +From 0672758b9621801c8f0d9e3c920370983b267a68 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 12:29:29 -0400 +Subject: [PATCH 04/70] agent: Don't set variable that won't be used + +It exits the loop immediately, so no point to set the variable. +And it makes the clang static analyzer happy. +--- + agent/agent.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 4d9381c..8ba99bc 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -4245,7 +4245,6 @@ nice_agent_recv_messages_blocking_or_nonblocking (NiceAgent *agent, + "Component removed during call."); + + component = NULL; +- error_reported = TRUE; + + goto recv_error; + } +-- +2.13.6 + + +From db05e8b0fdc713df93cd6a4c3914e5aee38b2391 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 12:30:27 -0400 +Subject: [PATCH 05/70] Make clang-analyzer happy + +Various little things, none of which should make a functional difference. +--- + agent/agent.c | 1 - + agent/conncheck.c | 2 +- + socket/udp-turn.c | 5 ++--- + stun/usages/bind.c | 4 +++- + 4 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 8ba99bc..28d7ccf 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -1552,7 +1552,6 @@ pseudo_tcp_socket_recv_messages (PseudoTcpSocket *self, + + if (len == 0) { + /* Reached EOS. */ +- len = 0; + goto done; + } else if (len < 0 && + pseudo_tcp_socket_get_error (self) == EWOULDBLOCK) { +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 7096b42..1dc13dd 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -606,7 +606,7 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + /* step: when there's no pair in the Waiting state, + * unfreeze a new pair and check it + */ +- res = priv_conn_check_unfreeze_next (agent); ++ priv_conn_check_unfreeze_next (agent); + + for (i = agent->streams; i ; i = i->next) { + NiceStream *stream = i->data; +diff --git a/socket/udp-turn.c b/socket/udp-turn.c +index cc3409b..a9c57e5 100644 +--- a/socket/udp-turn.c ++++ b/socket/udp-turn.c +@@ -406,9 +406,8 @@ socket_recv_messages (NiceSocket *sock, + + /* Split up the monolithic buffer again into the caller-provided buffers. */ + if (parsed_buffer_length > 0 && allocated_buffer) { +- parsed_buffer_length = +- memcpy_buffer_to_input_message (message, buffer, +- parsed_buffer_length); ++ memcpy_buffer_to_input_message (message, buffer, ++ parsed_buffer_length); + } + + if (allocated_buffer) +diff --git a/stun/usages/bind.c b/stun/usages/bind.c +index 8dd7afc..d56790f 100644 +--- a/stun/usages/bind.c ++++ b/stun/usages/bind.c +@@ -479,7 +479,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, + size_t len; + StunUsageTransReturn ret; + int val; +- struct sockaddr_storage alternate_server; ++ struct sockaddr_storage alternate_server = { AF_UNSPEC } ; + socklen_t alternate_server_len = sizeof (alternate_server); + StunUsageBindReturn bind_ret; + +@@ -548,6 +548,8 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, + if (bind_ret == STUN_USAGE_BIND_RETURN_ALTERNATE_SERVER) { + stun_trans_deinit (&trans); + ++ assert (alternate_server.ss_family != AF_UNSPEC); ++ + ret = stun_trans_create (&trans, SOCK_DGRAM, 0, + (struct sockaddr *) &alternate_server, alternate_server_len); + +-- +2.13.6 + + +From cd255bddc7fa0ddae056b5358a22b380c4eefc42 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 15:24:43 -0400 +Subject: [PATCH 06/70] udp-turn: Add some const to internal APIs + +--- + agent/component.c | 2 +- + socket/udp-turn.c | 10 +++++----- + socket/udp-turn.h | 7 ++++--- + 3 files changed, 10 insertions(+), 9 deletions(-) + +diff --git a/agent/component.c b/agent/component.c +index 32f7463..a679b30 100644 +--- a/agent/component.c ++++ b/agent/component.c +@@ -380,7 +380,7 @@ nice_component_restart (NiceComponent *cmp) + for (i = cmp->remote_candidates; i; i = i->next) { + NiceCandidate *candidate = i->data; + +- /* note: do not remove the local candidate that is ++ /* note: do not remove the remote candidate that is + * currently part of the 'selected pair', see ICE + * 9.1.1.1. "ICE Restarts" (ID-19) */ + if (candidate == cmp->selected_pair.remote) { +diff --git a/socket/udp-turn.c b/socket/udp-turn.c +index a9c57e5..190a9ea 100644 +--- a/socket/udp-turn.c ++++ b/socket/udp-turn.c +@@ -174,8 +174,8 @@ priv_send_data_queue_destroy (gpointer user_data) + + NiceSocket * + nice_udp_turn_socket_new (GMainContext *ctx, NiceAddress *addr, +- NiceSocket *base_socket, NiceAddress *server_addr, +- gchar *username, gchar *password, ++ NiceSocket *base_socket, const NiceAddress *server_addr, ++ const gchar *username, const gchar *password, + NiceTurnSocketCompatibility compatibility) + { + UdpTurnPriv *priv; +@@ -1184,7 +1184,7 @@ nice_udp_turn_socket_parse_recv_message (NiceSocket *sock, NiceSocket **from_soc + gsize + nice_udp_turn_socket_parse_recv (NiceSocket *sock, NiceSocket **from_sock, + NiceAddress *from, gsize len, guint8 *buf, +- NiceAddress *recv_from, guint8 *_recv_buf, gsize recv_len) ++ const NiceAddress *recv_from, const guint8 *_recv_buf, gsize recv_len) + { + + UdpTurnPriv *priv = (UdpTurnPriv *) sock->priv; +@@ -1194,8 +1194,8 @@ nice_udp_turn_socket_parse_recv (NiceSocket *sock, NiceSocket **from_sock, + ChannelBinding *binding = NULL; + + union { +- guint8 *u8; +- guint16 *u16; ++ const guint8 *u8; ++ const guint16 *u16; + } recv_buf; + + /* In the case of a reliable UDP-TURN-OVER-TCP (which means MS-TURN) +diff --git a/socket/udp-turn.h b/socket/udp-turn.h +index b1eeeb4..df10a1c 100644 +--- a/socket/udp-turn.h ++++ b/socket/udp-turn.h +@@ -59,15 +59,16 @@ nice_udp_turn_socket_parse_recv_message (NiceSocket *sock, NiceSocket **from_soc + gsize + nice_udp_turn_socket_parse_recv (NiceSocket *sock, NiceSocket **from_sock, + NiceAddress *from, gsize len, guint8 *buf, +- NiceAddress *recv_from, guint8 *recv_buf, gsize recv_len); ++ const NiceAddress *recv_from, const guint8 *recv_buf, gsize recv_len); + + gboolean + nice_udp_turn_socket_set_peer (NiceSocket *sock, NiceAddress *peer); + + NiceSocket * + nice_udp_turn_socket_new (GMainContext *ctx, NiceAddress *addr, +- NiceSocket *base_socket, NiceAddress *server_addr, +- gchar *username, gchar *password, NiceTurnSocketCompatibility compatibility); ++ NiceSocket *base_socket, const NiceAddress *server_addr, ++ const gchar *username, const gchar *password, ++ NiceTurnSocketCompatibility compatibility); + + void + nice_udp_turn_socket_set_ms_realm(NiceSocket *sock, StunMessage *msg); +-- +2.13.6 + + +From e56b910d2d8b70f5677bbd4be579d5b95aff33ad Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 16:16:05 -0400 +Subject: [PATCH 07/70] agent: Separate return from NiceSocket and internal + enum + +The same variable was used for return values from NiceSocket and +for the internal enum, but 0 and -1 have different meanings in both. +--- + agent/agent.c | 35 +++++++++++++++++++---------------- + 1 file changed, 19 insertions(+), 16 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 28d7ccf..7b8a9fc 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3422,7 +3422,8 @@ agent_recv_message_unlocked ( + { + NiceAddress from; + GList *item; +- gint retval; ++ RecvStatus retval; ++ gint sockret; + gboolean is_turn = FALSE; + + /* We need an address for packet parsing, below. */ +@@ -3483,8 +3484,8 @@ agent_recv_message_unlocked ( + local_bufs[i + 1].buffer = message->buffers[i].buffer; + local_bufs[i + 1].size = message->buffers[i].size; + } +- retval = nice_socket_recv_messages (nicesock, &local_message, 1); +- if (retval == 1) { ++ sockret = nice_socket_recv_messages (nicesock, &local_message, 1); ++ if (sockret == 1) { + message->length = ntohs (rfc4571_frame); + } + } else { +@@ -3499,7 +3500,7 @@ agent_recv_message_unlocked ( + _priv_set_socket_tos (agent, new_socket, stream->tos); + nice_component_attach_socket (component, new_socket); + } +- retval = 0; ++ sockret = 0; + } else { + /* In the case of a real ICE-TCP connection, we can use the socket as a + * bytestream and do the read here with caching of data being read +@@ -3508,9 +3509,9 @@ agent_recv_message_unlocked ( + + /* TODO: Support bytestream reads */ + message->length = 0; +- retval = 0; ++ sockret = 0; + if (available <= 0) { +- retval = available; ++ sockret = available; + + /* If we don't call check_connect_result on an outbound connection, + * then is_connected will always return FALSE. That's why we check +@@ -3523,7 +3524,7 @@ agent_recv_message_unlocked ( + * not connected, it means that it failed to connect, so we must + * return an error to make the socket fail/closed + */ +- retval = -1; ++ sockret = -1; + } else { + gint flags = G_SOCKET_MSG_PEEK; + +@@ -3536,7 +3537,7 @@ agent_recv_message_unlocked ( + */ + if (g_socket_receive_message (nicesock->fileno, NULL, + NULL, 0, NULL, NULL, &flags, NULL, NULL) == 0) +- retval = -1; ++ sockret = -1; + } + } else if (agent->rfc4571_expecting_length == 0) { + if ((gsize) available >= sizeof(guint16)) { +@@ -3544,8 +3545,8 @@ agent_recv_message_unlocked ( + GInputVector local_buf = { &rfc4571_frame, sizeof(guint16)}; + NiceInputMessage local_message = { &local_buf, 1, message->from, 0}; + +- retval = nice_socket_recv_messages (nicesock, &local_message, 1); +- if (retval == 1) { ++ sockret = nice_socket_recv_messages (nicesock, &local_message, 1); ++ if (sockret == 1) { + agent->rfc4571_expecting_length = ntohs (rfc4571_frame); + available = g_socket_get_available_bytes (nicesock->fileno); + } +@@ -3589,8 +3590,8 @@ agent_recv_message_unlocked ( + off += local_bufs[i].size; + } + } +- retval = nice_socket_recv_messages (nicesock, &local_message, 1); +- if (retval == 1) { ++ sockret = nice_socket_recv_messages (nicesock, &local_message, 1); ++ if (sockret == 1) { + message->length = local_message.length; + agent->rfc4571_expecting_length -= local_message.length; + } +@@ -3598,20 +3599,22 @@ agent_recv_message_unlocked ( + } + } + } else { +- retval = nice_socket_recv_messages (nicesock, message, 1); ++ sockret = nice_socket_recv_messages (nicesock, message, 1); + } + +- if (retval == 0) { ++ if (sockret == 0) { + retval = RECV_WOULD_BLOCK; /* EWOULDBLOCK */ + nice_debug_verbose ("%s: Agent %p: no message available on read attempt", + G_STRFUNC, agent); + goto done; +- } else if (retval < 0) { ++ } else if (sockret < 0) { + nice_debug ("Agent %p: %s returned %d, errno (%d) : %s", +- agent, G_STRFUNC, retval, errno, g_strerror (errno)); ++ agent, G_STRFUNC, sockret, errno, g_strerror (errno)); + + retval = RECV_ERROR; + goto done; ++ } else { ++ retval = sockret; + } + + if (retval == RECV_OOB || message->length == 0) { +-- +2.13.6 + + +From 4e605885c9dcaeb3ee443ec902c9c9189b19043f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 16:16:46 -0400 +Subject: [PATCH 08/70] agent: Remove impossible case + +--- + agent/agent.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 7b8a9fc..77f27e3 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3617,7 +3617,8 @@ agent_recv_message_unlocked ( + retval = sockret; + } + +- if (retval == RECV_OOB || message->length == 0) { ++ g_assert (retval != RECV_OOB); ++ if (message->length == 0) { + retval = RECV_OOB; + nice_debug_verbose ("%s: Agent %p: message handled out-of-band", G_STRFUNC, + agent); +-- +2.13.6 + + +From efc6a9be8cb34c899f0454c32e8a1e62b38df474 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 18:42:57 -0400 +Subject: [PATCH 09/70] tests: Use automake test-driver for valgrind + +This fixes the valgrind integration with the new test drivers. +--- + common.mk | 4 +- + scripts/valgrind-test-driver | 162 +++++++++++++++++++++++++++++++++++++++++++ + scripts/valgrind.sh | 28 -------- + 3 files changed, 165 insertions(+), 29 deletions(-) + create mode 100755 scripts/valgrind-test-driver + delete mode 100755 scripts/valgrind.sh + +diff --git a/common.mk b/common.mk +index e2ca3f4..b16380d 100644 +--- a/common.mk ++++ b/common.mk +@@ -4,6 +4,8 @@ pkgincludedir = $(includedir)/nice + + + check-valgrind: +- $(MAKE) TESTS_ENVIRONMENT="sh $$(cd "$(top_srcdir)" && pwd)/scripts/valgrind.sh" check ++ $(MAKE) TESTS_ENVIRONMENT="USE_VALGRIND=1 " check ++ ++LOG_DRIVER=$(top_srcdir)/scripts/valgrind-test-driver + + .PHONY: check-valgrind +diff --git a/scripts/valgrind-test-driver b/scripts/valgrind-test-driver +new file mode 100755 +index 0000000..5b660ee +--- /dev/null ++++ b/scripts/valgrind-test-driver +@@ -0,0 +1,162 @@ ++#! /bin/sh ++# test-driver - basic testsuite driver script. ++ ++scriptversion=2017-04-04.22; # UTC ++ ++# Copyright (C) 2011-2014 Free Software Foundation, Inc. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2, or (at your option) ++# any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# This file is maintained in Automake, please report ++# bugs to or send patches to ++# . ++ ++# Make unconditional expansion of undefined variables an error. This ++# helps a lot in preventing typo-related bugs. ++set -u ++ ++usage_error () ++{ ++ echo "$0: $*" >&2 ++ print_usage >&2 ++ exit 2 ++} ++ ++print_usage () ++{ ++ cat <$log_file 2>&1 ++else ++ "$@" >$log_file 2>&1 ++fi ++estatus=$? ++ ++if test $enable_hard_errors = no && test $estatus -eq 99; then ++ tweaked_estatus=1 ++else ++ tweaked_estatus=$estatus ++fi ++ ++case $tweaked_estatus:$expect_failure in ++ 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; ++ 0:*) col=$grn res=PASS recheck=no gcopy=no;; ++ 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; ++ 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; ++ *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; ++ *:*) col=$red res=FAIL recheck=yes gcopy=yes;; ++esac ++ ++# Report the test outcome and exit status in the logs, so that one can ++# know whether the test passed or failed simply by looking at the '.log' ++# file, without the need of also peaking into the corresponding '.trs' ++# file (automake bug#11814). ++echo "$res $test_name (exit status: $estatus)" >>$log_file ++ ++# Report outcome to console. ++echo "${col}${res}${std}: $test_name" ++ ++# Register the test result, and other relevant metadata. ++echo ":test-result: $res" > $trs_file ++echo ":global-test-result: $res" >> $trs_file ++echo ":recheck: $recheck" >> $trs_file ++echo ":copy-in-global-log: $gcopy" >> $trs_file ++ ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-time-zone: "UTC" ++# time-stamp-end: "; # UTC" ++# End: +diff --git a/scripts/valgrind.sh b/scripts/valgrind.sh +deleted file mode 100755 +index 2864b6f..0000000 +--- a/scripts/valgrind.sh ++++ /dev/null +@@ -1,28 +0,0 @@ +-#!/bin/sh +- +-export G_SLICE=always-malloc +-export G_DEBUG=gc-friendly +- +-tests_dir="`dirname $0`/../tests" +- +-report=`libtool --mode=execute valgrind \ +- --leak-check=full \ +- --show-reachable=no \ +- --error-exitcode=1 \ +- --suppressions=$tests_dir/libnice.supp \ +- --num-callers=30 \ +- $1 2>&1` +- +-#if echo "$report" | grep -q ==; then +-if test $? != 0; then +- echo "$report" +- exit 1 +-fi +- +-if echo "$report" | grep -q "definitely lost"; then +- if ! echo "$report" | grep -q "definitely lost: 0 bytes"; then +- echo "$report" +- exit 1 +- fi +-fi +- +-- +2.13.6 + + +From ae6d939e48366b80570d713b83334191b0982e71 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 20:34:05 -0400 +Subject: [PATCH 10/70] debug: Use libnice-verbose, not libnice-nice-verbose + +--- + agent/debug.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/agent/debug.c b/agent/debug.c +index e1a298c..84fee94 100644 +--- a/agent/debug.c ++++ b/agent/debug.c +@@ -102,7 +102,7 @@ void nice_debug_init (void) + flags |= g_parse_debug_string (gflags_string, gkeys, 4); + if (gflags_string && strstr (gflags_string, "libnice-pseudotcp-verbose")) + flags |= NICE_DEBUG_PSEUDOTCP_VERBOSE; +- if (gflags_string && strstr (gflags_string, "libnice-nice-verbose")) { ++ if (gflags_string && strstr (gflags_string, "libnice-verbose")) { + flags |= NICE_DEBUG_NICE_VERBOSE; + } + +-- +2.13.6 + + +From 10c557f23f8337f1304fff27bd85d2eb713cb249 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Wed, 5 Apr 2017 17:01:35 -0400 +Subject: [PATCH 11/70] test-credentials: Fix leak + +--- + tests/test-credentials.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tests/test-credentials.c b/tests/test-credentials.c +index 1de4e49..f1ea89d 100644 +--- a/tests/test-credentials.c ++++ b/tests/test-credentials.c +@@ -184,6 +184,8 @@ int main (void) + nice_agent_get_local_credentials (lagent, 1, &ufrag, &password); + g_assert (g_strcmp0("unicorns", ufrag) == 0); + g_assert (g_strcmp0("awesome", password) == 0); ++ g_free (ufrag); ++ g_free (password); + + nice_agent_gather_candidates (lagent, 1); + nice_agent_gather_candidates (ragent, 1); +-- +2.13.6 + + +From 1e9e28dbc98b4f6a7cf4bda0ca73b5abc2735ddc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 14:41:51 -0400 +Subject: [PATCH 12/70] candidate: Add equality check function + +Add a function that can check if two candidates point to the same place. + +https://phabricator.freedesktop.org/T104 + +Reviewed-by: Philip Withnall +Differential Revision: https://phabricator.freedesktop.org/D1715 +--- + agent/candidate.c | 11 +++++++++++ + agent/candidate.h | 18 +++++++++++++++++- + docs/reference/libnice/libnice-docs.xml | 4 ++++ + docs/reference/libnice/libnice-sections.txt | 1 + + nice/libnice.sym | 1 + + 5 files changed, 34 insertions(+), 1 deletion(-) + +diff --git a/agent/candidate.c b/agent/candidate.c +index 27966ef..85f8f65 100644 +--- a/agent/candidate.c ++++ b/agent/candidate.c +@@ -360,3 +360,14 @@ nice_candidate_copy (const NiceCandidate *candidate) + + return copy; + } ++ ++NICEAPI_EXPORT gboolean ++nice_candidate_equal_target (const NiceCandidate *candidate1, ++ const NiceCandidate *candidate2) ++{ ++ g_return_val_if_fail (candidate1 != NULL, FALSE); ++ g_return_val_if_fail (candidate2 != NULL, FALSE); ++ ++ return (candidate1->transport == candidate2->transport && ++ nice_address_equal (&candidate1->addr, &candidate2->addr)); ++} +diff --git a/agent/candidate.h b/agent/candidate.h +index fadfce3..e556c16 100644 +--- a/agent/candidate.h ++++ b/agent/candidate.h +@@ -230,7 +230,23 @@ nice_candidate_free (NiceCandidate *candidate); + NiceCandidate * + nice_candidate_copy (const NiceCandidate *candidate); + +-GType nice_candidate_get_type (void); ++/** ++ * nice_candidate_equal_target: ++ * @candidate1: A candidate ++ * @candidate2: A candidate ++ * ++ * Verifies that the candidates point to the same place, meaning they have ++ * the same transport and the same address. It ignores all other aspects. ++ * ++ * Returns: %TRUE if the candidates point to the same place ++ * ++ * Since: 0.1.15 ++ */ ++gboolean ++nice_candidate_equal_target (const NiceCandidate *candidate1, ++ const NiceCandidate *candidate2); ++ ++ GType nice_candidate_get_type (void); + + /** + * NICE_TYPE_CANDIDATE: +diff --git a/docs/reference/libnice/libnice-docs.xml b/docs/reference/libnice/libnice-docs.xml +index 53487bc..391be1a 100644 +--- a/docs/reference/libnice/libnice-docs.xml ++++ b/docs/reference/libnice/libnice-docs.xml +@@ -105,6 +105,10 @@ + Index of new symbols in 0.1.14 + + ++ ++ Index of new symbols in 0.1.15 ++ ++ + + + +diff --git a/docs/reference/libnice/libnice-sections.txt b/docs/reference/libnice/libnice-sections.txt +index d377257..88a6cd2 100644 +--- a/docs/reference/libnice/libnice-sections.txt ++++ b/docs/reference/libnice/libnice-sections.txt +@@ -76,6 +76,7 @@ NICE_CANDIDATE_MAX_FOUNDATION + nice_candidate_new + nice_candidate_free + nice_candidate_copy ++nice_candidate_equal_target + + NICE_TYPE_CANDIDATE + nice_candidate_get_type +diff --git a/nice/libnice.sym b/nice/libnice.sym +index b04bb95..1e522ad 100644 +--- a/nice/libnice.sym ++++ b/nice/libnice.sym +@@ -58,6 +58,7 @@ nice_agent_set_software + nice_agent_set_stream_name + nice_agent_set_stream_tos + nice_candidate_copy ++nice_candidate_equal_target + nice_candidate_free + nice_candidate_new + nice_component_state_to_string +-- +2.13.6 + + +From ffc7fddac42728bac6e4753a17bc52e5e610ae8b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 4 Apr 2017 21:27:39 -0400 +Subject: [PATCH 13/70] agent: Drop packets not from validated addresses + +This is required by the WebRTC spec. + +Remove test-mainloop as it doesnt even try to do +a negotiation. + +https://phabricator.freedesktop.org/T104 + +Differential Revision: https://phabricator.freedesktop.org/D1716 +--- + agent/agent-priv.h | 2 + + agent/agent.c | 20 +++++++++- + agent/component.c | 90 +++++++++++++++++++++++++++++++++++++++++ + agent/component.h | 10 +++++ + agent/conncheck.c | 8 +++- + tests/Makefile.am | 1 - + tests/test-mainloop.c | 108 -------------------------------------------------- + 7 files changed, 127 insertions(+), 112 deletions(-) + delete mode 100644 tests/test-mainloop.c + +diff --git a/agent/agent-priv.h b/agent/agent-priv.h +index 4d8c9b8..ada3630 100644 +--- a/agent/agent-priv.h ++++ b/agent/agent-priv.h +@@ -114,6 +114,8 @@ nice_input_message_iter_compare (const NiceInputMessageIter *a, + * MTU and estimated typical sizes of ICE STUN packet */ + #define MAX_STUN_DATAGRAM_PAYLOAD 1300 + ++#define NICE_COMPONENT_MAX_VALID_CANDIDATES 50 /* maximum number of validates remote candidates to keep, the number is arbitrary but hopefully large enough */ ++ + struct _NiceAgent + { + GObject parent; /* gobject pointer */ +diff --git a/agent/agent.c b/agent/agent.c +index 77f27e3..eff62f0 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3682,8 +3682,6 @@ agent_recv_message_unlocked ( + if (retval == RECV_OOB) + goto done; + +- agent->media_after_tick = TRUE; +- + /* If the message’s stated length is equal to its actual length, it’s probably + * a STUN message; otherwise it’s probably data. */ + if (stun_message_validate_buffer_length_fast ( +@@ -3715,6 +3713,7 @@ agent_recv_message_unlocked ( + nice_debug ("%s: Valid STUN packet received.", G_STRFUNC); + retval = RECV_OOB; + g_free (big_buf); ++ agent->media_after_tick = TRUE; + goto done; + } + } +@@ -3725,6 +3724,23 @@ agent_recv_message_unlocked ( + g_free (big_buf); + } + ++ if (!nice_component_verify_remote_candidate (component, ++ message->from, nicesock)) { ++ if (nice_debug_is_verbose ()) { ++ gchar str[INET6_ADDRSTRLEN]; ++ ++ nice_address_to_string (message->from, str); ++ nice_debug_verbose ("Agent %p : %d:%d DROPPING packet from unknown source" ++ " %s:%d sock-type: %d\n", agent, stream->id, component->id, str, ++ nice_address_get_port (message->from), nicesock->type); ++ } ++ ++ retval = RECV_OOB; ++ goto done; ++ } ++ ++ agent->media_after_tick = TRUE; ++ + /* Unhandled STUN; try handling TCP data, then pass to the client. */ + if (message->length > 0 && agent->reliable) { + if (!nice_socket_is_reliable (nicesock) && +diff --git a/agent/component.c b/agent/component.c +index a679b30..ba28ffa 100644 +--- a/agent/component.c ++++ b/agent/component.c +@@ -435,6 +435,8 @@ nice_component_update_selected_pair (NiceComponent *component, const CandidatePa + component->selected_pair.remote = pair->remote; + component->selected_pair.priority = pair->priority; + component->selected_pair.prflx_priority = pair->prflx_priority; ++ ++ nice_component_add_valid_candidate (component, pair->remote); + } + + /* +@@ -514,6 +516,11 @@ nice_component_set_selected_remote_candidate (NiceComponent *component, + component->selected_pair.remote = remote; + component->selected_pair.priority = priority; + ++ /* Get into fallback mode where packets from any source is accepted once ++ * this has been called. This is the expected behavior of pre-ICE SIP. ++ */ ++ component->fallback_mode = TRUE; ++ + return local; + } + +@@ -1107,6 +1114,9 @@ nice_component_finalize (GObject *obj) + g_warn_if_fail (cmp->remote_candidates == NULL); + g_warn_if_fail (cmp->incoming_checks == NULL); + ++ g_list_free_full (cmp->valid_candidates, ++ (GDestroyNotify) nice_candidate_free); ++ + g_clear_object (&cmp->tcp); + g_clear_object (&cmp->stop_cancellable); + g_clear_object (&cmp->iostream); +@@ -1421,3 +1431,83 @@ turn_server_unref (TurnServer *turn) + g_slice_free (TurnServer, turn); + } + } ++ ++void ++nice_component_add_valid_candidate (NiceComponent *component, ++ const NiceCandidate *candidate) ++{ ++ guint count = 0; ++ GList *item, *last = NULL; ++ ++ for (item = component->valid_candidates; item; item = item->next) { ++ NiceCandidate *cand = item->data; ++ ++ last = item; ++ count++; ++ if (nice_candidate_equal_target (cand, candidate)) ++ return; ++ } ++ ++ /* New candidate */ ++ ++ if (nice_debug_is_enabled ()) { ++ char str[INET6_ADDRSTRLEN]; ++ nice_address_to_string (&candidate->addr, str); ++ nice_debug ("Agent %p : %d:%d Adding valid source" ++ " candidate: %s:%d trans: %d\n", component->agent, ++ candidate->stream_id, candidate->component_id, str, ++ nice_address_get_port (&candidate->addr), candidate->transport); ++ } ++ ++ component->valid_candidates = g_list_prepend ( ++ component->valid_candidates, nice_candidate_copy (candidate)); ++ ++ /* Delete the last one to make sure we don't have a list that is too long, ++ * the candidates are not freed on ICE restart as this would be more complex, ++ * we just keep the list not too long. ++ */ ++ if (count > NICE_COMPONENT_MAX_VALID_CANDIDATES) { ++ NiceCandidate *cand = last->data; ++ ++ component->valid_candidates = g_list_delete_link ( ++ component->valid_candidates, last); ++ nice_candidate_free (cand); ++ } ++} ++ ++gboolean ++nice_component_verify_remote_candidate (NiceComponent *component, ++ const NiceAddress *address, NiceSocket *nicesock) ++{ ++ GList *item; ++ ++ if (component->fallback_mode) ++ return TRUE; ++ ++ for (item = component->valid_candidates; item; item = item->next) { ++ NiceCandidate *cand = item->data; ++ ++ if (((nicesock->type == NICE_SOCKET_TYPE_TCP_BSD && ++ (cand->transport == NICE_CANDIDATE_TRANSPORT_TCP_ACTIVE || ++ cand->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE || ++ cand->transport == NICE_CANDIDATE_TRANSPORT_TCP_SO)) || ++ cand->transport == NICE_CANDIDATE_TRANSPORT_UDP) && ++ nice_address_equal (address, &cand->addr)) { ++ /* fast return if it's already the first */ ++ if (item == component->valid_candidates) ++ return TRUE; ++ ++ /* Put the current candidate at the top so that in the normal use-case, ++ * this function becomes O(1). ++ */ ++ component->valid_candidates = g_list_remove_link ( ++ component->valid_candidates, item); ++ component->valid_candidates = g_list_concat (item, ++ component->valid_candidates); ++ ++ return TRUE; ++ } ++ } ++ ++ return FALSE; ++} +diff --git a/agent/component.h b/agent/component.h +index 6712794..a8a1222 100644 +--- a/agent/component.h ++++ b/agent/component.h +@@ -159,12 +159,14 @@ struct _NiceComponent { + NiceComponentState state; + GSList *local_candidates; /* list of NiceCandidate objs */ + GSList *remote_candidates; /* list of NiceCandidate objs */ ++ GList *valid_candidates; /* list of owned remote NiceCandidates that are part of valid pairs */ + GSList *socket_sources; /* list of SocketSource objs; must only grow monotonically */ + guint socket_sources_age; /* incremented when socket_sources changes */ + GSList *incoming_checks; /* list of IncomingCheck objs */ + GList *turn_servers; /* List of TurnServer objs */ + CandidatePair selected_pair; /* independent from checklists, + see ICE 11.1. "Sending Media" (ID-19) */ ++ gboolean fallback_mode; /* in this case, accepts packets from all, ignore candidate validation */ + NiceCandidate *restart_candidate; /* for storing active remote candidate during a restart */ + NiceCandidate *turn_candidate; /* for storing active turn candidate if turn servers have been cleared */ + /* I/O handling. The main context must always be non-NULL, and is used for all +@@ -301,6 +303,14 @@ turn_server_ref (TurnServer *turn); + void + turn_server_unref (TurnServer *turn); + ++void ++nice_component_add_valid_candidate (NiceComponent *component, ++ const NiceCandidate *candidate); ++ ++gboolean ++nice_component_verify_remote_candidate (NiceComponent *component, ++ const NiceAddress *address, NiceSocket *nicesock); ++ + + G_END_DECLS + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 1dc13dd..7ffa3db 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -2627,6 +2627,7 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + p->state = NICE_CHECK_SUCCEEDED; + nice_debug ("Agent %p : conncheck %p SUCCEEDED.", agent, p); + priv_conn_check_unfreeze_related (agent, stream, p); ++ nice_component_add_valid_candidate (component, remote_candidate); + } + else { + if (!local_cand) { +@@ -2652,8 +2653,10 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + + /* note: this is same as "adding to VALID LIST" in the spec + text */ +- if (new_pair) ++ if (new_pair) { + new_pair->valid = TRUE; ++ nice_component_add_valid_candidate (component, remote_candidate); ++ } + + return new_pair; + } +@@ -2739,6 +2742,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + nice_debug ("Agent %p : Mapped address not found." + " conncheck %p SUCCEEDED.", agent, p); + priv_conn_check_unfreeze_related (agent, stream, p); ++ nice_component_add_valid_candidate (component, p->remote); + } else { + ok_pair = priv_process_response_check_for_reflexive (agent, + stream, component, p, sockptr, &sockaddr.addr, +@@ -3654,6 +3658,8 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + } + } + ++ nice_component_add_valid_candidate (component, remote_candidate); ++ + priv_reply_to_conn_check (agent, stream, component, local_candidate, + remote_candidate, from, nicesock, rbuf_len, &msg, use_candidate); + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 7bfe075..d24a2aa 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -45,7 +45,6 @@ check_PROGRAMS = \ + test-send-recv \ + test-socket-is-based-on \ + test-priority \ +- test-mainloop \ + test-fullmode \ + test-restart \ + test-fallback \ +diff --git a/tests/test-mainloop.c b/tests/test-mainloop.c +deleted file mode 100644 +index 7c52daa..0000000 +--- a/tests/test-mainloop.c ++++ /dev/null +@@ -1,108 +0,0 @@ +-/* +- * This file is part of the Nice GLib ICE library. +- * +- * (C) 2006, 2007 Collabora Ltd. +- * Contact: Dafydd Harries +- * (C) 2006, 2007 Nokia Corporation. All rights reserved. +- * Contact: Kai Vehmanen +- * +- * The contents of this file are subject to the Mozilla Public License Version +- * 1.1 (the "License"); you may not use this file except in compliance with +- * the License. You may obtain a copy of the License at +- * http://www.mozilla.org/MPL/ +- * +- * Software distributed under the License is distributed on an "AS IS" basis, +- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +- * for the specific language governing rights and limitations under the +- * License. +- * +- * The Original Code is the Nice GLib ICE library. +- * +- * The Initial Developers of the Original Code are Collabora Ltd and Nokia +- * Corporation. All Rights Reserved. +- * +- * Contributors: +- * Dafydd Harries, Collabora Ltd. +- * Kai Vehmanen, Nokia +- * +- * Alternatively, the contents of this file may be used under the terms of the +- * the GNU Lesser General Public License Version 2.1 (the "LGPL"), in which +- * case the provisions of LGPL are applicable instead of those above. If you +- * wish to allow use of your version of this file only under the terms of the +- * LGPL and not to allow others to use your version of this file under the +- * MPL, indicate your decision by deleting the provisions above and replace +- * them with the notice and other provisions required by the LGPL. If you do +- * not delete the provisions above, a recipient may use your version of this +- * file under either the MPL or the LGPL. +- */ +-#ifdef HAVE_CONFIG_H +-# include +-#endif +- +-#include +- +-#include +-#include "socket/socket.h" +- +-static GMainLoop *loop = NULL; +- +-static void +-recv_cb ( +- NiceAgent *agent, +- guint stream_id, +- guint component_id, +- guint len, +- gchar *buf, +- gpointer data) +-{ +- g_assert (agent != NULL); +- g_assert (stream_id == 1); +- g_assert (component_id == 1); +- g_assert (len == 6); +- g_assert (0 == strncmp (buf, "\x80hello", len)); +- g_assert (42 == GPOINTER_TO_UINT (data)); +- g_main_loop_quit (loop); +-} +- +-int +-main (void) +-{ +- NiceAgent *agent; +- NiceAddress addr; +- guint stream; +- +- nice_address_init (&addr); +- +- loop = g_main_loop_new (NULL, FALSE); +- +- agent = nice_agent_new (g_main_loop_get_context (loop), NICE_COMPATIBILITY_RFC5245); +- nice_address_set_ipv4 (&addr, 0x7f000001); +- nice_agent_add_local_address (agent, &addr); +- stream = nice_agent_add_stream (agent, 1); +- nice_agent_gather_candidates (agent, stream); +- +- // attach to default main context +- nice_agent_attach_recv (agent, stream, NICE_COMPONENT_TYPE_RTP, +- g_main_loop_get_context (loop), recv_cb, GUINT_TO_POINTER (42)); +- +- { +- NiceCandidate *candidate; +- GSList *candidates, *i; +- +- candidates = nice_agent_get_local_candidates (agent, 1, 1); +- candidate = candidates->data; +- +- nice_socket_send (candidate->sockptr, &(candidate->addr), 6, "\x80hello"); +- for (i = candidates; i; i = i->next) +- nice_candidate_free ((NiceCandidate *) i->data); +- g_slist_free (candidates); +- } +- +- g_main_loop_run (loop); +- +- nice_agent_remove_stream (agent, stream); +- g_object_unref (agent); +- +- return 0; +-} +- +-- +2.13.6 + + +From 8fc22b0034d04cbc222e0637152b1cee2879eef3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Wed, 5 Apr 2017 17:43:26 -0400 +Subject: [PATCH 14/70] tests_: Add test to verify that only packets from + validated addresses pass + +https://phabricator.freedesktop.org/T104 + +Reviewed-by: Philip Withnall +Differential Revision: https://phabricator.freedesktop.org/D1717 +--- + tests/Makefile.am | 5 +- + tests/test-drop-invalid.c | 517 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 521 insertions(+), 1 deletion(-) + create mode 100644 tests/test-drop-invalid.c + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index d24a2aa..62d5d64 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -54,7 +54,8 @@ check_PROGRAMS = \ + test-tcp \ + test-icetcp \ + test-credentials \ +- test-turn ++ test-turn \ ++ test-drop-invalid + + dist_check_SCRIPTS = \ + check-test-fullmode-with-stun.sh \ +@@ -128,6 +129,8 @@ test_credentials_LDADD = $(COMMON_LDADD) + + test_turn_LDADD = $(COMMON_LDADD) + ++test_drop_invalid_LDADD = $(COMMON_LDADD) ++ + test_gstreamer_CFLAGS = $(AM_CFLAGS) $(GST_CHECK_CFLAGS) + test_gstreamer_LDADD = -lnice -L$(top_builddir)/nice/.libs $(GLIB_LIBS) $(GUPNP_LIBS) $(GST_CHECK_LIBS) $(GST_LIBS) + +diff --git a/tests/test-drop-invalid.c b/tests/test-drop-invalid.c +new file mode 100644 +index 0000000..97e3586 +--- /dev/null ++++ b/tests/test-drop-invalid.c +@@ -0,0 +1,517 @@ ++/* ++ * This file is part of the Nice GLib ICE library. ++ * ++ * Unit test for ICE full-mode related features. ++ * ++ * (C) 2007 Nokia Corporation. All rights reserved. ++ * Contact: Kai Vehmanen ++ * (C) 2017 Collabora Ltd ++ * Contact: Olivier Crete ++ * ++ * The contents of this file are subject to the Mozilla Public License Version ++ * 1.1 (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" basis, ++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License ++ * for the specific language governing rights and limitations under the ++ * License. ++ * ++ * The Original Code is the Nice GLib ICE library. ++ * ++ * The Initial Developers of the Original Code are Collabora Ltd and Nokia ++ * Corporation. All Rights Reserved. ++ * ++ * Contributors: ++ * Kai Vehmanen, Nokia ++ * ++ * Alternatively, the contents of this file may be used under the terms of the ++ * the GNU Lesser General Public License Version 2.1 (the "LGPL"), in which ++ * case the provisions of LGPL are applicable instead of those above. If you ++ * wish to allow use of your version of this file only under the terms of the ++ * LGPL and not to allow others to use your version of this file under the ++ * MPL, indicate your decision by deleting the provisions above and replace ++ * them with the notice and other provisions required by the LGPL. If you do ++ * not delete the provisions above, a recipient may use your version of this ++ * file under either the MPL or the LGPL. ++ */ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include "agent.h" ++ ++#include "socket/socket.h" ++ ++#include ++#include ++ ++ ++ ++static NiceComponentState global_lagent_state[2] = { NICE_COMPONENT_STATE_LAST, NICE_COMPONENT_STATE_LAST }; ++static NiceComponentState global_ragent_state[2] = { NICE_COMPONENT_STATE_LAST, NICE_COMPONENT_STATE_LAST }; ++static guint global_components_ready = 0; ++static guint global_components_ready_exit = 0; ++static guint global_components_failed = 0; ++static guint global_components_failed_exit = 0; ++static GMainLoop *global_mainloop = NULL; ++static gboolean global_lagent_gathering_done = FALSE; ++static gboolean global_ragent_gathering_done = FALSE; ++static gboolean global_lagent_ibr_received = FALSE; ++static gboolean global_ragent_ibr_received = FALSE; ++static int global_lagent_cands = 0; ++static int global_ragent_cands = 0; ++static gint global_ragent_read = 0; ++static guint global_exit_when_ibr_received = 0; ++ ++static void priv_print_global_status (void) ++{ ++ g_debug ("\tgathering_done=%d", global_lagent_gathering_done && global_ragent_gathering_done); ++ g_debug ("\tlstate[rtp]=%d [rtcp]=%d", global_lagent_state[0], global_lagent_state[1]); ++ g_debug ("\trstate[rtp]=%d [rtcp]=%d", global_ragent_state[0], global_ragent_state[1]); ++ g_debug ("\tL cands=%d R cands=%d", global_lagent_cands, global_ragent_cands); ++} ++ ++static gboolean timer_cb (gpointer pointer) ++{ ++ g_debug ("test-drop-invalid:%s: %p", G_STRFUNC, pointer); ++ ++ /* signal status via a global variable */ ++ ++ /* note: should not be reached, abort */ ++ g_error ("ERROR: test has got stuck, aborting..."); ++ ++ return FALSE; ++} ++ ++static void cb_nice_recv (NiceAgent *agent, guint stream_id, guint component_id, guint len, gchar *buf, gpointer user_data) ++{ ++ g_debug ("test-drop-invalid:%s: %p", G_STRFUNC, user_data); ++ ++ /* XXX: dear compiler, these are for you: */ ++ (void)agent; (void)stream_id; (void)component_id; (void)buf; ++ ++ /* Core of the test ++ * Assert on any unreleated packet received. This would include anything ++ * send before the negotiation is over. ++ */ ++ g_assert (len == 16); ++ g_assert (strncmp ("1234567812345678", buf, 16) == 0); ++ ++ if (component_id == 2) ++ return; ++ ++ if (GPOINTER_TO_UINT (user_data) == 2) { ++ g_debug ("right agent received %d bytes, stopping mainloop", len); ++ global_ragent_read = len; ++ g_main_loop_quit (global_mainloop); ++ } ++} ++ ++static void cb_candidate_gathering_done(NiceAgent *agent, guint stream_id, gpointer data) ++{ ++ g_debug ("test-drop-invalid:%s: %p", G_STRFUNC, data); ++ ++ if (GPOINTER_TO_UINT (data) == 1) ++ global_lagent_gathering_done = TRUE; ++ else if (GPOINTER_TO_UINT (data) == 2) ++ global_ragent_gathering_done = TRUE; ++ ++ if (global_lagent_gathering_done && ++ global_ragent_gathering_done) ++ g_main_loop_quit (global_mainloop); ++ ++ /* XXX: dear compiler, these are for you: */ ++ (void)agent; ++} ++ ++static void cb_component_state_changed (NiceAgent *agent, guint stream_id, guint component_id, guint state, gpointer data) ++{ ++ gboolean ready_to_connected = FALSE; ++ g_debug ("test-drop-invalid:%s: %p", G_STRFUNC, data); ++ ++ if (GPOINTER_TO_UINT (data) == 1) { ++ if (global_lagent_state[component_id - 1] == NICE_COMPONENT_STATE_READY && ++ state == NICE_COMPONENT_STATE_CONNECTED) ++ ready_to_connected = TRUE; ++ global_lagent_state[component_id - 1] = state; ++ } else if (GPOINTER_TO_UINT (data) == 2) { ++ if (global_ragent_state[component_id - 1] == NICE_COMPONENT_STATE_READY && ++ state == NICE_COMPONENT_STATE_CONNECTED) ++ ready_to_connected = TRUE; ++ global_ragent_state[component_id - 1] = state; ++ } ++ ++ if (state == NICE_COMPONENT_STATE_READY) ++ global_components_ready++; ++ else if (state == NICE_COMPONENT_STATE_CONNECTED && ready_to_connected) ++ global_components_ready--; ++ if (state == NICE_COMPONENT_STATE_FAILED) ++ global_components_failed++; ++ ++ g_debug ("test-drop-invalid: checks READY/EXIT-AT %u/%u.", global_components_ready, global_components_ready_exit); ++ g_debug ("test-drop-invalid: checks FAILED/EXIT-AT %u/%u.", global_components_failed, global_components_failed_exit); ++ ++ /* signal status via a global variable */ ++ if (global_components_ready == global_components_ready_exit && ++ global_components_failed == global_components_failed_exit) { ++ g_debug ("Components ready/failed achieved. Stopping mailoop"); ++ g_main_loop_quit (global_mainloop); ++ return; ++ } ++ ++ /* XXX: dear compiler, these are for you: */ ++ (void)agent; (void)stream_id; (void)data; (void)component_id; ++} ++ ++static void cb_new_selected_pair(NiceAgent *agent, guint stream_id, guint component_id, ++ gchar *lfoundation, gchar* rfoundation, gpointer data) ++{ ++ g_debug ("test-drop-invalid:%s: %p", G_STRFUNC, data); ++ ++ if (GPOINTER_TO_UINT (data) == 1) ++ ++global_lagent_cands; ++ else if (GPOINTER_TO_UINT (data) == 2) ++ ++global_ragent_cands; ++ ++ /* XXX: dear compiler, these are for you: */ ++ (void)agent; (void)stream_id; (void)component_id; (void)lfoundation; (void)rfoundation; ++} ++ ++static void cb_new_candidate(NiceAgent *agent, guint stream_id, guint component_id, ++ gchar *foundation, gpointer data) ++{ ++ g_debug ("test-drop-invalid:%s: %p", G_STRFUNC, data); ++ ++ /* XXX: dear compiler, these are for you: */ ++ (void)agent; (void)stream_id; (void)data; (void)component_id; (void)foundation; ++} ++ ++static void cb_initial_binding_request_received(NiceAgent *agent, guint stream_id, gpointer data) ++{ ++ g_debug ("test-drop-invalid:%s: %p", G_STRFUNC, data); ++ ++ if (GPOINTER_TO_UINT (data) == 1) ++ global_lagent_ibr_received = TRUE; ++ else if (GPOINTER_TO_UINT (data) == 2) ++ global_ragent_ibr_received = TRUE; ++ ++ if (global_exit_when_ibr_received) { ++ g_debug ("Received initial binding request. Stopping mailoop"); ++ g_main_loop_quit (global_mainloop); ++ } ++ ++ /* XXX: dear compiler, these are for you: */ ++ (void)agent; (void)stream_id; (void)data; ++} ++ ++static void set_candidates (NiceAgent *from, guint from_stream, ++ NiceAgent *to, guint to_stream, guint component) ++{ ++ GSList *cands = NULL; ++ GSList *peer_cands = NULL; ++ GSList *item1, *item2; ++ ++ cands = nice_agent_get_local_candidates (from, from_stream, component); ++ peer_cands = nice_agent_get_local_candidates (to, to_stream, component); ++ ++ /* ++ * Core of the test: ++ * ++ * Send packets that shoudl be dropped. ++ */ ++ ++ for (item1 = cands; item1; item1 = item1->next) { ++ NiceCandidate *cand = item1->data; ++ NiceSocket *nicesock = cand->sockptr; ++ ++ g_assert (nicesock); ++ ++ for (item2 = peer_cands; item2; item2 = item2->next) { ++ NiceCandidate *target_cand = item2->data; ++ ++ nice_socket_send (nicesock, &target_cand->addr, 12, "123456789AB"); ++ } ++ ++ } ++ ++ nice_agent_set_remote_candidates (to, to_stream, component, cands); ++ ++ g_slist_free_full (cands, (GDestroyNotify) nice_candidate_free); ++ g_slist_free_full (peer_cands, (GDestroyNotify) nice_candidate_free); ++} ++ ++static void set_credentials (NiceAgent *lagent, guint lstream, ++ NiceAgent *ragent, guint rstream) ++{ ++ gchar *ufrag = NULL, *password = NULL; ++ ++ nice_agent_get_local_credentials(lagent, lstream, &ufrag, &password); ++ nice_agent_set_remote_credentials (ragent, rstream, ufrag, password); ++ g_free (ufrag); ++ g_free (password); ++ nice_agent_get_local_credentials(ragent, rstream, &ufrag, &password); ++ nice_agent_set_remote_credentials (lagent, lstream, ufrag, password); ++ g_free (ufrag); ++ g_free (password); ++} ++ ++static int run_full_test (NiceAgent *lagent, NiceAgent *ragent, NiceAddress *baseaddr, guint ready, guint failed) ++{ ++ guint ls_id, rs_id; ++ gint ret; ++ ++ /* XXX: dear compiler, this is for you */ ++ (void)baseaddr; ++ ++ /* step: initialize variables modified by the callbacks */ ++ global_components_ready = 0; ++ global_components_ready_exit = ready; ++ global_components_failed = 0; ++ global_components_failed_exit = failed; ++ global_lagent_gathering_done = FALSE; ++ global_ragent_gathering_done = FALSE; ++ global_lagent_ibr_received = ++ global_ragent_ibr_received = FALSE; ++ global_lagent_cands = ++ global_ragent_cands = 0; ++ ++ g_object_set (G_OBJECT (lagent), "controlling-mode", TRUE, NULL); ++ g_object_set (G_OBJECT (ragent), "controlling-mode", FALSE, NULL); ++ ++ /* step: add one stream, with RTP+RTCP components, to each agent */ ++ ls_id = nice_agent_add_stream (lagent, 2); ++ ++ rs_id = nice_agent_add_stream (ragent, 2); ++ g_assert (ls_id > 0); ++ g_assert (rs_id > 0); ++ ++ /* Gather candidates and test nice_agent_set_port_range */ ++ nice_agent_set_port_range (lagent, ls_id, 1, 10000, 10000); ++ nice_agent_set_port_range (lagent, ls_id, 2, 10001, 10001); ++ nice_agent_set_port_range (ragent, rs_id, 1, 12345, 12345); ++ nice_agent_set_port_range (ragent, rs_id, 2, 10000, 10001); ++ g_assert (nice_agent_gather_candidates (lagent, ls_id) == TRUE); ++ g_assert (nice_agent_gather_candidates (ragent, rs_id) == FALSE); ++ g_assert (nice_agent_get_local_candidates (ragent, rs_id, 1) == NULL); ++ g_assert (nice_agent_get_local_candidates (ragent, rs_id, 2) == NULL); ++ nice_agent_set_port_range (ragent, rs_id, 2, 10000, 10002); ++ g_assert (nice_agent_gather_candidates (ragent, rs_id) == TRUE); ++ ++ { ++ GSList *cands = NULL, *i; ++ NiceCandidate *cand = NULL; ++ ++ cands = nice_agent_get_local_candidates (lagent, ls_id, 1); ++ g_assert (g_slist_length (cands) == 1); ++ cand = cands->data; ++ g_assert (cand->type == NICE_CANDIDATE_TYPE_HOST); ++ g_assert (nice_address_get_port (&cand->addr) == 10000); ++ for (i = cands; i; i = i->next) ++ nice_candidate_free ((NiceCandidate *) i->data); ++ g_slist_free (cands); ++ ++ cands = nice_agent_get_local_candidates (lagent, ls_id, 2); ++ g_assert (g_slist_length (cands) == 1); ++ cand = cands->data; ++ g_assert (cand->type == NICE_CANDIDATE_TYPE_HOST); ++ g_assert (nice_address_get_port (&cand->addr) == 10001); ++ for (i = cands; i; i = i->next) ++ nice_candidate_free ((NiceCandidate *) i->data); ++ g_slist_free (cands); ++ ++ cands = nice_agent_get_local_candidates (ragent, rs_id, 1); ++ g_assert (g_slist_length (cands) == 1); ++ cand = cands->data; ++ g_assert (cand->type == NICE_CANDIDATE_TYPE_HOST); ++ g_assert (nice_address_get_port (&cand->addr) == 12345); ++ for (i = cands; i; i = i->next) ++ nice_candidate_free ((NiceCandidate *) i->data); ++ g_slist_free (cands); ++ ++ cands = nice_agent_get_local_candidates (ragent, rs_id, 2); ++ g_assert (g_slist_length (cands) == 1); ++ cand = cands->data; ++ g_assert (cand->type == NICE_CANDIDATE_TYPE_HOST); ++ g_assert (nice_address_get_port (&cand->addr) == 10002); ++ for (i = cands; i; i = i->next) ++ nice_candidate_free ((NiceCandidate *) i->data); ++ g_slist_free (cands); ++ ++ } ++ ++ /* step: attach to mainloop (needed to register the fds) */ ++ nice_agent_attach_recv (lagent, ls_id, NICE_COMPONENT_TYPE_RTP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, ++ GUINT_TO_POINTER (1)); ++ nice_agent_attach_recv (lagent, ls_id, NICE_COMPONENT_TYPE_RTCP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, ++ GUINT_TO_POINTER (1)); ++ nice_agent_attach_recv (ragent, rs_id, NICE_COMPONENT_TYPE_RTP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, ++ GUINT_TO_POINTER (2)); ++ nice_agent_attach_recv (ragent, rs_id, NICE_COMPONENT_TYPE_RTCP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, ++ GUINT_TO_POINTER (2)); ++ ++ /* step: run mainloop until local candidates are ready ++ * (see timer_cb() above) */ ++ if (global_lagent_gathering_done != TRUE || ++ global_ragent_gathering_done != TRUE) { ++ g_debug ("test-drop-invalid: Added streams, running mainloop until 'candidate-gathering-done'..."); ++ g_main_loop_run (global_mainloop); ++ g_assert (global_lagent_gathering_done == TRUE); ++ g_assert (global_ragent_gathering_done == TRUE); ++ } ++ ++ set_credentials (lagent, ls_id, ragent, rs_id); ++ ++ /* step: pass the remote candidates to agents */ ++ set_candidates (ragent, rs_id, lagent, ls_id, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (ragent, rs_id, lagent, ls_id, NICE_COMPONENT_TYPE_RTCP); ++ set_candidates (lagent, ls_id, ragent, rs_id, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (lagent, ls_id, ragent, rs_id, NICE_COMPONENT_TYPE_RTCP); ++ ++ g_debug ("test-drop-invalid: Set properties, next running mainloop until connectivity checks succeed..."); ++ ++ /* step: run the mainloop until connectivity checks succeed ++ * (see timer_cb() above) */ ++ g_main_loop_run (global_mainloop); ++ ++ /* note: verify that STUN binding requests were sent */ ++ g_assert (global_lagent_ibr_received == TRUE); ++ g_assert (global_ragent_ibr_received == TRUE); ++ ++ /* note: Send a packet from another address */ ++ /* These should also be ignored */ ++ { ++ NiceCandidate *local_cand = NULL; ++ NiceCandidate *remote_cand = NULL; ++ NiceSocket *tmpsock; ++ ++ g_assert (nice_agent_get_selected_pair (lagent, ls_id, 1, &local_cand, ++ &remote_cand)); ++ g_assert (local_cand); ++ g_assert (remote_cand); ++ ++ tmpsock = nice_udp_bsd_socket_new (NULL); ++ nice_socket_send (tmpsock, &remote_cand->addr, 4, "ABCD"); ++ nice_socket_send (tmpsock, &local_cand->addr, 5, "ABCDE"); ++ nice_socket_free (tmpsock); ++ } ++ ++ /* note: test payload send and receive */ ++ global_ragent_read = 0; ++ ret = nice_agent_send (lagent, ls_id, 1, 16, "1234567812345678"); ++ g_assert (ret != -1); ++ g_debug ("Sent %d bytes", ret); ++ g_assert (ret == 16); ++ while (global_ragent_read != 16) ++ g_main_context_iteration (NULL, TRUE); ++ g_assert (global_ragent_read == 16); ++ ++ g_debug ("test-drop-invalid: Ran mainloop, removing streams..."); ++ ++ /* step: clean up resources and exit */ ++ ++ nice_agent_remove_stream (lagent, ls_id); ++ nice_agent_remove_stream (ragent, rs_id); ++ ++ return 0; ++} ++ ++int main (void) ++{ ++ NiceAgent *lagent, *ragent; /* agent's L and R */ ++ NiceAddress baseaddr; ++ int result; ++ guint timer_id; ++ ++#ifdef G_OS_WIN32 ++ WSADATA w; ++ ++ WSAStartup(0x0202, &w); ++#endif ++ ++ global_mainloop = g_main_loop_new (NULL, FALSE); ++ ++ /* step: create the agents L and R */ ++ lagent = nice_agent_new (g_main_loop_get_context (global_mainloop), ++ NICE_COMPATIBILITY_RFC5245); ++ ragent = nice_agent_new (g_main_loop_get_context (global_mainloop), ++ NICE_COMPATIBILITY_RFC5245); ++ ++ g_object_set (G_OBJECT (lagent), "ice-tcp", FALSE, NULL); ++ g_object_set (G_OBJECT (ragent), "ice-tcp", FALSE, NULL); ++ ++ ++ nice_agent_set_software (lagent, "test-drop-invalid, Left Agent"); ++ nice_agent_set_software (ragent, "test-drop-invalid, Right Agent"); ++ ++ /* step: add a timer to catch state changes triggered by signals */ ++ timer_id = g_timeout_add (30000, timer_cb, NULL); ++ ++ /* step: specify which local interface to use */ ++ if (!nice_address_set_from_string (&baseaddr, "127.0.0.1")) ++ g_assert_not_reached (); ++ nice_agent_add_local_address (lagent, &baseaddr); ++ nice_agent_add_local_address (ragent, &baseaddr); ++ ++ g_signal_connect (G_OBJECT (lagent), "candidate-gathering-done", ++ G_CALLBACK (cb_candidate_gathering_done), GUINT_TO_POINTER(1)); ++ g_signal_connect (G_OBJECT (ragent), "candidate-gathering-done", ++ G_CALLBACK (cb_candidate_gathering_done), GUINT_TO_POINTER (2)); ++ g_signal_connect (G_OBJECT (lagent), "component-state-changed", ++ G_CALLBACK (cb_component_state_changed), GUINT_TO_POINTER (1)); ++ g_signal_connect (G_OBJECT (ragent), "component-state-changed", ++ G_CALLBACK (cb_component_state_changed), GUINT_TO_POINTER (2)); ++ g_signal_connect (G_OBJECT (lagent), "new-selected-pair", ++ G_CALLBACK (cb_new_selected_pair), GUINT_TO_POINTER(1)); ++ g_signal_connect (G_OBJECT (ragent), "new-selected-pair", ++ G_CALLBACK (cb_new_selected_pair), GUINT_TO_POINTER (2)); ++ g_signal_connect (G_OBJECT (lagent), "new-candidate", ++ G_CALLBACK (cb_new_candidate), GUINT_TO_POINTER (1)); ++ g_signal_connect (G_OBJECT (ragent), "new-candidate", ++ G_CALLBACK (cb_new_candidate), GUINT_TO_POINTER (2)); ++ g_signal_connect (G_OBJECT (lagent), "initial-binding-request-received", ++ G_CALLBACK (cb_initial_binding_request_received), ++ GUINT_TO_POINTER (1)); ++ g_signal_connect (G_OBJECT (ragent), "initial-binding-request-received", ++ G_CALLBACK (cb_initial_binding_request_received), ++ GUINT_TO_POINTER (2)); ++ ++ g_object_set (G_OBJECT (lagent), "upnp", FALSE, NULL); ++ g_object_set (G_OBJECT (ragent), "upnp", FALSE, NULL); ++ ++ ++ /* step: run test the first time */ ++ g_debug ("test-drop-invalid: TEST STARTS / running test for the 1st time"); ++ result = run_full_test (lagent, ragent, &baseaddr, 4 ,0); ++ priv_print_global_status (); ++ g_assert (result == 0); ++ g_assert (global_lagent_state[0] == NICE_COMPONENT_STATE_READY); ++ g_assert (global_lagent_state[1] == NICE_COMPONENT_STATE_READY); ++ g_assert (global_ragent_state[0] == NICE_COMPONENT_STATE_READY); ++ g_assert (global_ragent_state[1] == NICE_COMPONENT_STATE_READY); ++ /* When using TURN, we get peer reflexive candidates for the host cands ++ that we removed so we can get another new_selected_pair signal later ++ depending on timing/racing, we could double (or not) the amount we expected ++ */ ++ ++ /* note: verify that correct number of local candidates were reported */ ++ g_assert (global_lagent_cands == 2); ++ g_assert (global_ragent_cands == 2); ++ ++ g_object_unref (lagent); ++ g_object_unref (ragent); ++ ++ g_main_loop_unref (global_mainloop); ++ global_mainloop = NULL; ++ ++ g_source_remove (timer_id); ++#ifdef G_OS_WIN32 ++ WSACleanup(); ++#endif ++ return result; ++} +-- +2.13.6 + + +From f49ab88f957a3a250ef2ada0c0fab4fbbd3e5da8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 11 Apr 2017 16:42:55 -0400 +Subject: [PATCH 15/70] conncheck: Check the controlling state when the req was + sent + +It was checking when the pair was created, but the role may have +already changed when the request is sent. +--- + agent/conncheck.c | 30 +++++++++++++++++++----------- + agent/conncheck.h | 1 - + 2 files changed, 19 insertions(+), 12 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 7ffa3db..5501c2b 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1666,7 +1666,6 @@ static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + tmpbuf2, nice_address_get_port (&pair->remote->addr)); + } + pair->nominated = use_candidate; +- pair->controlling = agent->controlling_mode; + pair->prflx_priority = ensure_unique_priority (component, + peer_reflexive_candidate_priority (agent, local)); + +@@ -2531,7 +2530,6 @@ static CandidateCheckPair *priv_add_peer_reflexive_pair (NiceAgent *agent, guint + pair->priority = nice_candidate_pair_priority (pair->remote->priority, + pair->local->priority); + pair->nominated = FALSE; +- pair->controlling = agent->controlling_mode; + pair->prflx_priority = ensure_unique_priority (component, + peer_reflexive_candidate_priority (agent, local_cand)); + nice_debug ("Agent %p : added a new peer-discovered pair with foundation of '%s'.", agent, pair->foundation); +@@ -2777,16 +2775,26 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + } else if (res == STUN_USAGE_ICE_RETURN_ROLE_CONFLICT) { + /* case: role conflict error, need to restart with new role */ + nice_debug ("Agent %p : conncheck %p ROLE CONFLICT, restarting", agent, p); +- /* note: our role might already have changed due to an +- * incoming request, but if not, change role now; +- * follows ICE 7.1.2.1 "Failure Cases" (ID-19) */ +- priv_check_for_role_conflict (agent, !p->controlling); + +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; +- p->state = NICE_CHECK_WAITING; +- priv_add_pair_to_triggered_check_queue (agent, p); +- nice_debug ("Agent %p : pair %p state WAITING", agent, p); ++ if (p->stun_message.buffer != NULL) { ++ guint64 tie; ++ gboolean controlled_mode; ++ ++ /* note: our role might already have changed due to an ++ * incoming request, but if not, change role now; ++ * follows ICE 7.1.2.1 "Failure Cases" (ID-19) */ ++ controlled_mode = (stun_message_find64 (&p->stun_message, ++ STUN_ATTRIBUTE_ICE_CONTROLLED, &tie) == ++ STUN_MESSAGE_RETURN_SUCCESS); ++ ++ priv_check_for_role_conflict (agent, controlled_mode); ++ ++ p->stun_message.buffer = NULL; ++ p->stun_message.buffer_len = 0; ++ p->state = NICE_CHECK_WAITING; ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ nice_debug ("Agent %p : pair %p state WAITING", agent, p); ++ } + trans_found = TRUE; + } else { + /* case: STUN error, the check STUN context was freed */ +diff --git a/agent/conncheck.h b/agent/conncheck.h +index 10319cc..c204475 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -85,7 +85,6 @@ struct _CandidateCheckPair + gchar foundation[NICE_CANDIDATE_PAIR_MAX_FOUNDATION]; + NiceCheckState state; + gboolean nominated; +- gboolean controlling; + gboolean timer_restarted; + gboolean valid; + guint64 priority; +-- +2.13.6 + + +From b0538d8c51f65019867b56a45cf90a70bef38f01 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 11 Apr 2017 18:31:21 -0400 +Subject: [PATCH 16/70] agent: Ignore remote candidate of non-accepted types + +If we disable ice-tcp or ice-udp, ignore the remote +candidates for those types. +--- + agent/agent.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/agent/agent.c b/agent/agent.c +index eff62f0..77fb1eb 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3112,6 +3112,13 @@ static gboolean priv_add_remote_candidate ( + NiceComponent *component; + NiceCandidate *candidate; + ++ if (transport == NICE_CANDIDATE_TRANSPORT_UDP && ++ !agent->use_ice_udp) ++ return FALSE; ++ if (transport != NICE_CANDIDATE_TRANSPORT_UDP && ++ !agent->use_ice_tcp) ++ return FALSE; ++ + if (!agent_find_component (agent, stream_id, component_id, NULL, &component)) + return FALSE; + +-- +2.13.6 + + +From f6f704c5e8d2193bc67ba2b697c77694e1698c43 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Thu, 9 Jun 2016 22:22:33 +0200 +Subject: [PATCH 17/70] stun timer: fix timeout of the last retransmission + +According to RFC 5389, section 7.2.1, a special timeout is applied to +the last retransmission (Rm * RTO), with Rm default value of 16, instead +of (64 * RTO), 2^6 when the number of transmissions Rc is set to 7. + +As spotted by Olivier Crete, stun_timer_* is a public API, that cannot +be changed, and the initial delay (RTO) is not preserved in the +stun_timer_s struct. So we use a hack that implicitely guess Rm from the +number of transmissions Rc, by generalizing the default value of the +spec for Rm and Rc to other values of Rc passed in stun_timer_start( + +According to the spec, with the default value of Rc=7, the last delay +should be (64 * RTO), and it is instead (16 * RTO). So the last delay +can be computed by dividing the penultimate delay by two, instead of +multiplying it by two. + +Differential Revision: https://phabricator.freedesktop.org/D1108 +--- + stun/usages/timer.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/stun/usages/timer.c b/stun/usages/timer.c +index 2862ab8..5370cba 100644 +--- a/stun/usages/timer.c ++++ b/stun/usages/timer.c +@@ -145,7 +145,11 @@ StunUsageTimerReturn stun_timer_refresh (StunTimer *timer) + if (timer->retransmissions >= timer->max_retransmissions) + return STUN_USAGE_TIMER_RETURN_TIMEOUT; + +- add_delay (&timer->deadline, timer->delay *= 2); ++ if (timer->retransmissions == timer->max_retransmissions - 1) ++ timer->delay = timer->delay / 2; ++ else ++ timer->delay = timer->delay * 2; ++ add_delay (&timer->deadline, timer->delay); + timer->retransmissions++; + return STUN_USAGE_TIMER_RETURN_RETRANSMIT; + } +-- +2.13.6 + + +From 0a2cb0a9b14a5a1a4b01ba68ab2e5a2aa965f342 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 5 Apr 2016 21:32:39 +0200 +Subject: [PATCH 18/70] agent: do not create a GSource for UDP TURN socket + +With this patch, we don't create a new GSource for udp-turn socket, +because it would duplicate the packets already received on the base UDP +socket, as the underlying GSocket is the same. This is a race condition, +because an UDP packet arriving on the base socket, may randomly be +handled by the GSource callback created for the base socket (udp-bsd) of +the callback created for the udp-turn socket. Moreover this callback +already knows how to parse UDP datagrams received from a known turn +server. + +This patch also prevents a subtle bug, when a STUN request is received +directly from a peer, is handled by the udp turn socket. If the agent +already has a valid permission for this remote candidate, established +for another pair, it will happily send the STUN reply through the turn +relay. This generates a source address mismatch on the peer agent, when +it'll receive the STUN response from the turn relay instead of the +initial address the request has been sent to. + +Differential Revision: https://phabricator.freedesktop.org/D932 +--- + agent/component.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/agent/component.c b/agent/component.c +index ba28ffa..ab665b6 100644 +--- a/agent/component.c ++++ b/agent/component.c +@@ -105,6 +105,13 @@ socket_source_attach (SocketSource *socket_source, GMainContext *context) + if (socket_source->socket->fileno == NULL) + return; + ++ /* Do not create a GSource for UDP turn socket, because it ++ * would duplicate the packets already received on the base ++ * UDP socket. ++ */ ++ if (socket_source->socket->type == NICE_SOCKET_TYPE_UDP_TURN) ++ return; ++ + /* Create a source. */ + source = g_socket_create_source (socket_source->socket->fileno, + G_IO_IN, NULL); +-- +2.13.6 + + +From d5446a72233eab8501be0b3fb9060c8be3ba034b Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 1 May 2017 08:51:40 +0100 +Subject: [PATCH 19/70] examples: Stop installing the examples +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There’s no point in installing them; their benefit is in providing +example code to developers. + +Debian doesn’t package them; Fedora packages them in a separate +subpackage which will have to disappear. + +Signed-off-by: Philip Withnall +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1737 +--- + examples/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/examples/Makefile.am b/examples/Makefile.am +index 1e7decf..9c80854 100644 +--- a/examples/Makefile.am ++++ b/examples/Makefile.am +@@ -18,7 +18,7 @@ AM_CFLAGS = \ + $(GLIB_CFLAGS) \ + $(GUPNP_CFLAGS) + +-bin_PROGRAMS = simple-example threaded-example sdp-example ++noinst_PROGRAMS = simple-example threaded-example sdp-example + + simple_example_SOURCES = simple-example.c + simple_example_LDADD = $(top_builddir)/agent/libagent.la \ +-- +2.13.6 + + +From b4abda09c79e4ce372a3771300abf568c85c7ff5 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Thu, 21 Apr 2016 18:18:59 +0200 +Subject: [PATCH 20/70] interfaces: ignore predefined network interfaces + +Some interfaces, like the one managed by libvirtd to provide a network +bridge to locally hosted virtual machines, can be completely ignored +when gathering ICE candidates. The motivation for adding this +possibility is that, ignoring them doesn't remove capabilities, and +improves the overall speed of the connection check method, by reducing +the number of pairs to be tested. This patch adds the possibility to +define such interfaces in the configuration script. + +Differential Revision: https://phabricator.freedesktop.org/D948 +--- + agent/interfaces.c | 6 ++++++ + configure.ac | 14 ++++++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/agent/interfaces.c b/agent/interfaces.c +index 0fa2fd7..a81888e 100644 +--- a/agent/interfaces.c ++++ b/agent/interfaces.c +@@ -276,6 +276,12 @@ nice_interfaces_get_local_ips (gboolean include_loopback) + nice_debug ("Ignoring loopback interface"); + g_free (addr_string); + } ++#ifdef IGNORED_IFACE_PREFIX ++ } else if (g_str_has_prefix (ifa->ifa_name, IGNORED_IFACE_PREFIX)) { ++ nice_debug ("Ignoring interface %s as it matches prefix %s", ++ ifa->ifa_name, IGNORED_IFACE_PREFIX); ++ g_free (addr_string); ++#endif + } else { + if (nice_interfaces_is_private_ip (ifa->ifa_addr)) + ips = add_ip_to_list (ips, addr_string, TRUE); +diff --git a/configure.ac b/configure.ac +index b39bfe3..98bbc08 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -354,6 +354,20 @@ AM_CONDITIONAL([ENABLE_GTK_DOC], false) + # GObject introspection + GOBJECT_INTROSPECTION_CHECK([1.30.0]) + ++dnl Ignore a specific network interface name prefix from the connection check ++AC_MSG_CHECKING([whether to ignore a specific network interface name prefix]) ++AC_ARG_WITH([ignored-network-interface-prefix], ++ [AS_HELP_STRING([--with-ignored-network-interface-prefix=string], ++ [Ignore network interfaces whose name starts with "string" from the ICE connection ++ check algorithm. For example, interfaces "virbr" in the case of the virtual bridge ++ handled by libvirtd, do not help in finding connectivity.])], ++ [interface_prefix="$withval"]) ++AS_IF([test -n "$interface_prefix"], ++ [AC_DEFINE_UNQUOTED([IGNORED_IFACE_PREFIX],["$interface_prefix"], ++ [Ignore this network interface prefix from the connection check]) ++ AC_MSG_RESULT([yes, $interface_prefix])], ++ [AC_MSG_RESULT([no])]) ++ + AC_CONFIG_MACRO_DIR(m4) + + AC_OUTPUT +-- +2.13.6 + + +From 80c613699786567fd93db74377138600794a86e0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Thu, 8 Jun 2017 16:34:21 -0400 +Subject: [PATCH 21/70] agent: Use base_addr to generate rport in SDP + +Reported by Capricornus (zhushengliang) + +https://phabricator.freedesktop.org/T7763 +--- + agent/agent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 77fb1eb..1ff09af 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -5690,7 +5690,7 @@ _generate_candidate_sdp (NiceAgent *agent, + g_string_append_printf (sdp, " typ %s", _cand_type_to_sdp (candidate->type)); + if (nice_address_is_valid (&candidate->base_addr) && + !nice_address_equal (&candidate->addr, &candidate->base_addr)) { +- port = nice_address_get_port (&candidate->addr); ++ port = nice_address_get_port (&candidate->base_addr); + nice_address_to_string (&candidate->base_addr, ip4); + g_string_append_printf (sdp, " raddr %s rport %d", ip4, + port == 0 ? 9 : port); +-- +2.13.6 + + +From 8bb210c5af4bcaf342d7fa4fef6034269e976532 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Thu, 9 Jun 2016 23:28:43 +0200 +Subject: [PATCH 22/70] stun timer: make properties for stun timer tunables + +Three STUN binding request properties should be customisable. RFC 5245 +describes the retransmission timer of the STUN transaction 'RTO', and +RFC 5389 describes the number of retransmissions to send until a +response is received 'Rc'. The third property is the 'RTO' when +a reliable connection is used. + +RFC 5389 introduces a supplementary property 'Rm' as a multiplier used +to compute the final timeout RTO * Rm. However, this property is not +added in libnice, because this would require breaking the public API for +STUN. Currently, our STUN implementation hardcodes a division by two for +this final timeout. + +Differential Revision: https://phabricator.freedesktop.org/D1109 +--- + agent/agent-priv.h | 4 ++- + agent/agent.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + agent/conncheck.c | 16 +++++---- + agent/discovery.c | 8 ++--- + stun/usages/timer.h | 6 +++- + 5 files changed, 118 insertions(+), 13 deletions(-) + +diff --git a/agent/agent-priv.h b/agent/agent-priv.h +index ada3630..162ea63 100644 +--- a/agent/agent-priv.h ++++ b/agent/agent-priv.h +@@ -106,7 +106,6 @@ nice_input_message_iter_compare (const NiceInputMessageIter *a, + + #define NICE_AGENT_TIMER_TA_DEFAULT 20 /* timer Ta, msecs (impl. defined) */ + #define NICE_AGENT_TIMER_TR_DEFAULT 25000 /* timer Tr, msecs (impl. defined) */ +-#define NICE_AGENT_TIMER_TR_MIN 15000 /* timer Tr, msecs (ICE ID-19) */ + #define NICE_AGENT_MAX_CONNECTIVITY_CHECKS_DEFAULT 100 /* see spec 5.7.3 (ID-19) */ + + +@@ -132,6 +131,9 @@ struct _NiceAgent + guint timer_ta; /* property: timer Ta */ + guint max_conn_checks; /* property: max connectivity checks */ + gboolean force_relay; /* property: force relay */ ++ guint stun_max_retransmissions; /* property: stun max retransmissions, Rc */ ++ guint stun_initial_timeout; /* property: stun initial timeout, RTO */ ++ guint stun_reliable_timeout; /* property: stun reliable timeout */ + + GSList *local_addresses; /* list of NiceAddresses for local + interfaces */ +diff --git a/agent/agent.c b/agent/agent.c +index 1ff09af..25d7886 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -113,6 +113,9 @@ enum + PROP_BYTESTREAM_TCP, + PROP_KEEPALIVE_CONNCHECK, + PROP_FORCE_RELAY, ++ PROP_STUN_MAX_RETRANSMISSIONS, ++ PROP_STUN_INITIAL_TIMEOUT, ++ PROP_STUN_RELIABLE_TIMEOUT, + }; + + +@@ -708,6 +711,76 @@ nice_agent_class_init (NiceAgentClass *klass) + FALSE, + G_PARAM_READWRITE)); + ++ /** ++ * NiceAgent:stun-max-retransmissions ++ * ++ * The maximum number of retransmissions of the STUN binding requests ++ * used in the gathering stage, to find our local candidates, and used ++ * in the connection check stage, to test the validity of each ++ * constructed pair. This property is described as 'Rc' in the RFC ++ * 5389, with a default value of 7. The timeout of each STUN request ++ * is doubled for each retransmission, so the choice of this value has ++ * a direct impact on the time needed to move from the CONNECTED state ++ * to the READY state, and on the time needed to complete the GATHERING ++ * state. ++ * ++ * Since: UNRELEASED ++ */ ++ ++ g_object_class_install_property (gobject_class, PROP_STUN_MAX_RETRANSMISSIONS, ++ g_param_spec_uint ( ++ "stun-max-retransmissions", ++ "STUN Max Retransmissions", ++ "Maximum number of STUN binding requests retransmissions " ++ "described as 'Rc' in the STUN specification.", ++ 1, 99, ++ STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); ++ ++ /** ++ * NiceAgent:stun-initial-timeout ++ * ++ * The initial timeout (msecs) of the STUN binding requests ++ * used in the gathering stage, to find our local candidates. ++ * This property is described as 'RTO' in the RFC 5389 and RFC 5245. ++ * This timeout is doubled for each retransmission, until ++ * #NiceAgent:stun-max-retransmissions have been done, ++ * with an exception for the last restransmission, where the timeout is ++ * divided by two instead (RFC 5389 indicates that a customisable ++ * multiplier 'Rm' to 'RTO' should be used). ++ * ++ * Since: UNRELEASED ++ */ ++ ++ g_object_class_install_property (gobject_class, PROP_STUN_INITIAL_TIMEOUT, ++ g_param_spec_uint ( ++ "stun-initial-timeout", ++ "STUN Initial Timeout", ++ "STUN timeout in msecs of the initial binding requests used in the " ++ "gathering state, described as 'RTO' in the ICE specification.", ++ 20, 9999, ++ STUN_TIMER_DEFAULT_TIMEOUT, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); ++ ++ /** ++ * NiceAgent:stun-reliable-timeout ++ * ++ * The initial timeout of the STUN binding requests used ++ * for a reliable timer. ++ * ++ * Since: UNRELEASED ++ */ ++ ++ g_object_class_install_property (gobject_class, PROP_STUN_RELIABLE_TIMEOUT, ++ g_param_spec_uint ( ++ "stun-reliable-timeout", ++ "STUN Reliable Timeout", ++ "STUN timeout in msecs of the initial binding requests used for " ++ "a reliable timer.", ++ 20, 99999, ++ STUN_TIMER_DEFAULT_RELIABLE_TIMEOUT, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); ++ + /* install signals */ + + /** +@@ -1187,6 +1260,18 @@ nice_agent_get_property ( + g_value_set_boolean (value, agent->force_relay); + break; + ++ case PROP_STUN_MAX_RETRANSMISSIONS: ++ g_value_set_uint (value, agent->stun_max_retransmissions); ++ break; ++ ++ case PROP_STUN_INITIAL_TIMEOUT: ++ g_value_set_uint (value, agent->stun_initial_timeout); ++ break; ++ ++ case PROP_STUN_RELIABLE_TIMEOUT: ++ g_value_set_uint (value, agent->stun_reliable_timeout); ++ break; ++ + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +@@ -1374,6 +1459,18 @@ nice_agent_set_property ( + agent->force_relay = g_value_get_boolean (value); + break; + ++ case PROP_STUN_MAX_RETRANSMISSIONS: ++ agent->stun_max_retransmissions = g_value_get_uint (value); ++ break; ++ ++ case PROP_STUN_INITIAL_TIMEOUT: ++ agent->stun_initial_timeout = g_value_get_uint (value); ++ break; ++ ++ case PROP_STUN_RELIABLE_TIMEOUT: ++ agent->stun_reliable_timeout = g_value_get_uint (value); ++ break; ++ + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 5501c2b..14fdcd9 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -888,8 +888,9 @@ static gboolean priv_conn_keepalive_tick_unlocked (NiceAgent *agent) + agent, buf_len, p->keepalive.stun_message.buffer); + + if (buf_len > 0) { +- stun_timer_start (&p->keepalive.timer, STUN_TIMER_DEFAULT_TIMEOUT, +- STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS); ++ stun_timer_start (&p->keepalive.timer, ++ agent->stun_initial_timeout, ++ agent->stun_max_retransmissions); + + agent->media_after_tick = FALSE; + +@@ -1116,8 +1117,9 @@ static void priv_turn_allocate_refresh_tick_unlocked (CandidateRefresh *cand) + } + + if (buffer_len > 0) { +- stun_timer_start (&cand->timer, STUN_TIMER_DEFAULT_TIMEOUT, +- STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS); ++ stun_timer_start (&cand->timer, ++ cand->agent->stun_initial_timeout, ++ cand->agent->stun_max_retransmissions); + + /* send the refresh */ + agent_socket_send (cand->nicesock, &cand->server, +@@ -2171,11 +2173,11 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + + if (buffer_len > 0) { + if (nice_socket_is_reliable(pair->sockptr)) { +- stun_timer_start_reliable(&pair->timer, STUN_TIMER_DEFAULT_RELIABLE_TIMEOUT); ++ stun_timer_start_reliable(&pair->timer, agent->stun_reliable_timeout); + } else { + stun_timer_start (&pair->timer, + priv_compute_conncheck_timer (agent), +- STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS); ++ agent->stun_max_retransmissions); + } + + /* TCP-ACTIVE candidate must create a new socket before sending +@@ -2340,7 +2342,7 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + if (!nice_socket_is_reliable (p->sockptr) && !p->timer_restarted) { + stun_timer_start (&p->timer, + priv_compute_conncheck_timer (agent), +- STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS); ++ agent->stun_max_retransmissions); + p->timer_restarted = TRUE; + } + } +diff --git a/agent/discovery.c b/agent/discovery.c +index 7a890a0..4cc99c2 100644 +--- a/agent/discovery.c ++++ b/agent/discovery.c +@@ -1072,11 +1072,11 @@ static gboolean priv_discovery_tick_unlocked (gpointer pointer) + + if (buffer_len > 0) { + if (nice_socket_is_reliable (cand->nicesock)) { +- stun_timer_start_reliable (&cand->timer, +- STUN_TIMER_DEFAULT_RELIABLE_TIMEOUT); ++ stun_timer_start_reliable (&cand->timer, agent->stun_reliable_timeout); + } else { +- stun_timer_start (&cand->timer, 200, +- STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS); ++ stun_timer_start (&cand->timer, ++ agent->stun_initial_timeout, ++ agent->stun_max_retransmissions); + } + + /* send the conncheck */ +diff --git a/stun/usages/timer.h b/stun/usages/timer.h +index e74353b..097e75b 100644 +--- a/stun/usages/timer.h ++++ b/stun/usages/timer.h +@@ -132,7 +132,11 @@ struct stun_timer_s { + * The default intial timeout to use for the timer + * RFC recommendds 500, but it's ridiculous, 50ms is known to work in most + * cases as it is also what is used by SIP style VoIP when sending A-Law and +- * mu-Law audio, so 200ms should be hyper safe. ++ * mu-Law audio, so 200ms should be hyper safe. With an initial timeout ++ * of 200ms, a default of 7 transmissions, the last timeout will be ++ * 16 * 200ms, and we expect to receive a response from the stun server ++ * before (1 + 2 + 4 + 8 + 16 + 32 + 16) * 200ms = 15200 ms after the initial ++ * stun request has been sent. + */ + #define STUN_TIMER_DEFAULT_TIMEOUT 200 + +-- +2.13.6 + + +From 7a2c1edf502849a868b6f1026e8e2c343dee4ded Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 6 Jun 2016 22:24:50 +0200 +Subject: [PATCH 23/70] conncheck: update selected pair when nominated flag is + set + +This modifies commit 8f1f615. It is better focused to update the +selected pair just after its nominated flag has been set. We also keep +the code homogeneous with other places, where the call to +priv_update_selected_pair() immediately follows the setting of +pair->nominated. Moreover in priv_update_check_list_state_for_ready(), +we would call priv_update_selected_pair() more times that necessary when +iterating on all nominated pairs. + +Differential Revision: https://phabricator.freedesktop.org/D1125 +--- + agent/conncheck.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 14fdcd9..8c55269 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -76,6 +76,8 @@ static void conn_check_free_item (gpointer data); + static CandidateCheckPair *priv_conn_check_add_for_candidate_pair_matched ( + NiceAgent *agent, guint stream_id, NiceComponent *component, + NiceCandidate *local, NiceCandidate *remote, NiceCheckState initial_state); ++static gboolean priv_update_selected_pair (NiceAgent *agent, ++ NiceComponent *component, CandidateCheckPair *pair); + + static int priv_timer_expired (GTimeVal *timer, GTimeVal *now) + { +@@ -515,6 +517,7 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + p->state == NICE_CHECK_DISCOVERED)) { + nice_debug ("Agent %p : restarting check %p as the nominated pair.", agent, p); + p->nominated = TRUE; ++ priv_update_selected_pair (agent, component, p); + priv_add_pair_to_triggered_check_queue (agent, p); + break; /* move to the next component */ + } +@@ -1530,7 +1533,6 @@ static void priv_update_check_list_state_for_ready (NiceAgent *agent, NiceStream + ++valid; + if (p->nominated == TRUE) { + ++nominated; +- priv_update_selected_pair (agent, component, p); + } + } + } +-- +2.13.6 + + +From 3a58ba6120b188d78c5709e0349c0346bfa21c1a Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 1 Feb 2016 11:10:21 +0100 +Subject: [PATCH 24/70] conncheck: peer reflexive candidates are not paired + +This patch makes the code compliant with ICE RFC, 7.2.1.3 "Learning +Peer Reflexive Candidates" and 7.1.3.2.1 "Discovering Peer Reflexive +Candidates", where discovered candidates do not cause the creation +of new pairs to be checked. + +Differential Revision: https://phabricator.freedesktop.org/D805 +--- + agent/conncheck.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 8c55269..cdf1025 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1787,6 +1787,15 @@ int conn_check_add_for_candidate (NiceAgent *agent, guint stream_id, NiceCompone + + g_assert (remote != NULL); + ++ /* note: according to 7.2.1.3, "Learning Peer Reflexive Candidates", ++ * the agent does not pair this candidate with any local candidates. ++ */ ++ if (agent->compatibility == NICE_COMPATIBILITY_RFC5245 && ++ remote->type == NICE_CANDIDATE_TYPE_PEER_REFLEXIVE) ++ { ++ return added; ++ } ++ + for (i = component->local_candidates; i ; i = i->next) { + NiceCandidate *local = i->data; + +@@ -1821,6 +1830,18 @@ int conn_check_add_for_local_candidate (NiceAgent *agent, guint stream_id, NiceC + + g_assert (local != NULL); + ++ /* ++ * note: according to 7.1.3.2.1 "Discovering Peer Reflexive ++ * Candidates", the peer reflexive candidate is not paired ++ * with other remote candidates ++ */ ++ ++ if (agent->compatibility == NICE_COMPATIBILITY_RFC5245 && ++ local->type == NICE_CANDIDATE_TYPE_PEER_REFLEXIVE) ++ { ++ return added; ++ } ++ + for (i = component->remote_candidates; i ; i = i->next) { + + NiceCandidate *remote = i->data; +-- +2.13.6 + + +From a602ff57aae6a6afdeab843954c48e6fb5d82d31 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 12 Apr 2016 13:02:45 +0200 +Subject: [PATCH 25/70] conncheck: fix pair state transition when successful + response is received + +According the ICE RFC 5245, 7.1.3.2.3, the pair that *generated* a +successful check should go to state succeeded, not only the valid +pair built in section 7.1.3.2.2. + +Differential Revision: https://phabricator.freedesktop.org/D810 +--- + agent/conncheck.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index cdf1025..7fc2a1d 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -2654,7 +2654,10 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + } + else { + if (!local_cand) { +- if (!agent->force_relay) ++ if (!agent->force_relay) { ++ /* step: find a new local candidate, see RFC 5245 7.1.3.2.1. ++ * "Discovering Peer Reflexive Candidates" ++ */ + local_cand = discovery_add_peer_reflexive_candidate (agent, + stream->id, + component->id, +@@ -2662,8 +2665,9 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + sockptr, + local_candidate, + remote_candidate); +- p->state = NICE_CHECK_FAILED; +- nice_debug ("Agent %p : pair %p state FAILED", agent, p); ++ nice_debug ("Agent %p : added a new peer-reflexive local candidate %p", ++ agent, local_cand); ++ } + } + + /* step: add a new discovered pair (see RFC 5245 7.1.3.2.2 +@@ -2671,7 +2675,12 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + if (local_cand) + new_pair = priv_add_peer_reflexive_pair (agent, stream->id, component, + local_cand, p); +- nice_debug ("Agent %p : conncheck %p FAILED, %p DISCOVERED.", agent, p, new_pair); ++ /* step: The agent sets the state of the pair that *generated* the check to ++ * Succeeded, RFC 5245, 7.1.3.2.3, "Updating Pair States" ++ */ ++ p->state = NICE_CHECK_SUCCEEDED; ++ nice_debug ("Agent %p : conncheck %p SUCCEEDED, %p DISCOVERED.", ++ agent, p, new_pair); + } + + /* note: this is same as "adding to VALID LIST" in the spec +-- +2.13.6 + + +From 0636f9addc041cf93c4ff4eaa351b1768d48a32e Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 19 Apr 2016 13:12:48 +0200 +Subject: [PATCH 26/70] conncheck: implement ice regular nomination method + +This patch implements Regular Nomation as described in RFC5245 +8.1.1.1. The controlling agent lets valid pairs accumulate, and +decides which pair to recheck with the use-candidate attribute set. +priv_mark_pair_nominated() follows 7.2.1.5, to update the nominated +pair when acting as a STUN server, and +priv_map_reply_to_conn_check_request() implements 7.1.3.2.4 to +update the nominated pair when acting as a STUN client. A new +property is also added to the agent to control the nomination +mode, which can be regular of aggressive, with default value +set to aggressive. + +Two new flags are introduced in the CandidateCheckPair structure: + +- use_candidate_on_next_check indicates the STUN client to add the + use-candidate attribute when the pair will be checked. At this + time, the nominated flag has not been set on this pair yet. + +- mark_nominated_on_response_arrival indicates the STUN server + to nominate the pair when its succesfull response to a + previous triggered check will arrive (7.2.1.5, item #2) + +Differential Revision: https://phabricator.freedesktop.org/D811 +--- + agent/Makefile.am | 23 ++++ + agent/agent-priv.h | 8 ++ + agent/agent.c | 59 +++++++++ + agent/agent.h | 43 ++++++- + agent/conncheck.c | 178 +++++++++++++++++++++++++++- + agent/conncheck.h | 2 + + configure.ac | 1 + + docs/reference/libnice/libnice-sections.txt | 2 + + 8 files changed, 309 insertions(+), 7 deletions(-) + +diff --git a/agent/Makefile.am b/agent/Makefile.am +index b585393..915f312 100644 +--- a/agent/Makefile.am ++++ b/agent/Makefile.am +@@ -22,6 +22,12 @@ if WINDOWS + AM_CFLAGS += -DWINVER=0x0501 # _WIN32_WINNT_WINXP + endif + ++BUILT_SOURCES = \ ++ agent-enum-types.h \ ++ agent-enum-types.c ++ ++CLEANFILES += $(BUILT_SOURCES) ++ + noinst_LTLIBRARIES = libagent.la + + libagent_la_SOURCES = \ +@@ -54,6 +60,23 @@ libagent_la_SOURCES = \ + outputstream.c \ + $(BUILT_SOURCES) + ++agent-enum-types.h: agent.h Makefile ++ $(AM_V_GEN)$(GLIB_MKENUMS) \ ++ --fhead "#ifndef __AGENT_ENUM_TYPES_H__\n#define __AGENT_ENUM_TYPES_H__ 1\n\n#include \n\nG_BEGIN_DECLS\n" \ ++ --fprod "/* enumerations from \"@filename@\" */\n" \ ++ --vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define NICE_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ ++ --ftail "G_END_DECLS\n\n#endif /* !AGENT_ENUM_TYPES_H */" \ ++ $(addprefix $(srcdir)/,agent.h) > $@ ++ ++agent-enum-types.c: agent.h Makefile agent-enum-types.h ++ $(AM_V_GEN)$(GLIB_MKENUMS) \ ++ --fhead "#include \n#include \n#include \"agent.h\"\n#include \"agent-enum-types.h\"" \ ++ --fprod "\n/* enumerations from \"@filename@\" */" \ ++ --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType type = 0;\n if (!type) {\n static const G@Type@Value values[] = {" \ ++ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ ++ --vtail " { 0, NULL, NULL }\n };\n type = g_@type@_register_static (\"@EnumName@\", values);\n }\n return type;\n}\n\n" \ ++ $(addprefix $(srcdir)/,agent.h) > $@ ++ + libagent_la_LIBADD = \ + $(top_builddir)/random/libnice-random.la \ + $(top_builddir)/socket/libsocket.la \ +diff --git a/agent/agent-priv.h b/agent/agent-priv.h +index 162ea63..3384180 100644 +--- a/agent/agent-priv.h ++++ b/agent/agent-priv.h +@@ -115,6 +115,13 @@ nice_input_message_iter_compare (const NiceInputMessageIter *a, + + #define NICE_COMPONENT_MAX_VALID_CANDIDATES 50 /* maximum number of validates remote candidates to keep, the number is arbitrary but hopefully large enough */ + ++/* A convenient macro to test if the agent is compatible with RFC5245 ++ * or OC2007R2. Specifically these two modes share the support ++ * of the regular or aggressive nomination mode */ ++#define NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2(obj) \ ++ ((obj)->compatibility == NICE_COMPATIBILITY_RFC5245 || \ ++ (obj)->compatibility == NICE_COMPATIBILITY_OC2007R2) ++ + struct _NiceAgent + { + GObject parent; /* gobject pointer */ +@@ -134,6 +141,7 @@ struct _NiceAgent + guint stun_max_retransmissions; /* property: stun max retransmissions, Rc */ + guint stun_initial_timeout; /* property: stun initial timeout, RTO */ + guint stun_reliable_timeout; /* property: stun reliable timeout */ ++ NiceNominationMode nomination_mode; /* property: Nomination mode */ + + GSList *local_addresses; /* list of NiceAddresses for local + interfaces */ +diff --git a/agent/agent.c b/agent/agent.c +index 25d7886..577a7e0 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -73,6 +73,7 @@ + #include "interfaces.h" + + #include "pseudotcp.h" ++#include "agent-enum-types.h" + + /* Maximum size of a UDP packet’s payload, as the packet’s length field is 16b + * wide. */ +@@ -116,6 +117,7 @@ enum + PROP_STUN_MAX_RETRANSMISSIONS, + PROP_STUN_INITIAL_TIMEOUT, + PROP_STUN_RELIABLE_TIMEOUT, ++ PROP_NOMINATION_MODE, + }; + + +@@ -440,6 +442,24 @@ nice_agent_class_init (NiceAgentClass *klass) + G_PARAM_READWRITE)); + + /** ++ * NiceAgent:nomination-mode: ++ * ++ * The nomination mode used in the ICE specification for describing ++ * the selection of valid pairs to be used upstream. ++ * See also: #NiceNominationMode ++ * ++ * Since: UNRELEASED ++ */ ++ g_object_class_install_property (gobject_class, PROP_NOMINATION_MODE, ++ g_param_spec_enum ( ++ "nomination-mode", ++ "ICE nomination mode", ++ "Nomination mode used in the ICE specification for describing " ++ "the selection of valid pairs to be used upstream", ++ NICE_TYPE_NOMINATION_MODE, NICE_NOMINATION_MODE_AGGRESSIVE, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); ++ ++ /** + * NiceAgent:proxy-ip: + * + * The proxy server IP used to bypass a proxy firewall +@@ -1096,6 +1116,7 @@ nice_agent_init (NiceAgent *agent) + agent->stun_server_port = DEFAULT_STUN_PORT; + agent->controlling_mode = TRUE; + agent->max_conn_checks = NICE_AGENT_MAX_CONNECTIVITY_CHECKS_DEFAULT; ++ agent->nomination_mode = NICE_NOMINATION_MODE_AGGRESSIVE; + + agent->discovery_list = NULL; + agent->discovery_unsched_items = 0; +@@ -1144,6 +1165,23 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat) + } + + ++NICEAPI_EXPORT NiceAgent * ++nice_agent_new_full (GMainContext *ctx, ++ NiceCompatibility compat, ++ gboolean reliable, ++ NiceNominationMode nomination) ++{ ++ NiceAgent *agent = g_object_new (NICE_TYPE_AGENT, ++ "compatibility", compat, ++ "main-context", ctx, ++ "reliable", reliable, ++ "nomination-mode", nomination, ++ NULL); ++ ++ return agent; ++} ++ ++ + static void + nice_agent_get_property ( + GObject *object, +@@ -1190,6 +1228,10 @@ nice_agent_get_property ( + /* XXX: should we prune the list of already existing checks? */ + break; + ++ case PROP_NOMINATION_MODE: ++ g_value_set_enum (value, agent->nomination_mode); ++ break; ++ + case PROP_PROXY_IP: + g_value_set_string (value, agent->proxy_ip); + break; +@@ -1394,6 +1436,10 @@ nice_agent_set_property ( + agent->max_conn_checks = g_value_get_uint (value); + break; + ++ case PROP_NOMINATION_MODE: ++ agent->nomination_mode = g_value_get_enum (value); ++ break; ++ + case PROP_PROXY_IP: + g_free (agent->proxy_ip); + agent->proxy_ip = g_value_dup_string (value); +@@ -3298,6 +3344,19 @@ static gboolean priv_add_remote_candidate ( + username, password, priority); + } + ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ /* note: If there are TCP candidates for a media stream, ++ * a controlling agent MUST use the regular selection algorithm, ++ * RFC 6544, sect 8, "Concluding ICE Processing" ++ */ ++ if (agent->nomination_mode == NICE_NOMINATION_MODE_AGGRESSIVE && ++ transport != NICE_CANDIDATE_TRANSPORT_UDP) { ++ nice_debug ("Agent %p : we have TCP candidates, switching back " ++ "to regular nomination mode", agent); ++ agent->nomination_mode = NICE_NOMINATION_MODE_REGULAR; ++ } ++ } ++ + if (base_addr) + candidate->base_addr = *base_addr; + +diff --git a/agent/agent.h b/agent/agent.h +index 47c4d5a..6e233c6 100644 +--- a/agent/agent.h ++++ b/agent/agent.h +@@ -377,6 +377,26 @@ typedef enum + NICE_PROXY_TYPE_LAST = NICE_PROXY_TYPE_HTTP, + } NiceProxyType; + ++/** ++ * NiceNominationMode: ++ * @NICE_NOMINATION_MODE_AGGRESSIVE: Aggressive nomination mode ++ * @NICE_NOMINATION_MODE_REGULAR: Regular nomination mode ++ * ++ * An enum to specity the kind of nomination mode to use by ++ * the agent, as described in RFC 5245. Two modes exists, ++ * regular and aggressive. They differ by the way the controlling ++ * agent chooses to put the USE-CANDIDATE attribute in its STUN ++ * messages. The aggressive mode is supposed to nominate a pair ++ * faster, than the regular mode, potentially causing the nominated ++ * pair to change until the connection check completes. ++ * ++ * Since: UNRELEASED ++ */ ++typedef enum ++{ ++ NICE_NOMINATION_MODE_REGULAR = 0, ++ NICE_NOMINATION_MODE_AGGRESSIVE, ++} NiceNominationMode; + + /** + * NiceAgentRecvFunc: +@@ -429,6 +449,28 @@ NiceAgent * + nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat); + + /** ++ * nice_agent_new_full: ++ * @ctx: The Glib Mainloop Context to use for timers ++ * @compat: The compatibility mode of the agent ++ * @reliable: The reliability mode of the agent ++ * @nomination: The nomination mode of the agent ++ * ++ * Create a new #NiceAgent with parameters that must be be defined at ++ * construction time. ++ * The returned object must be freed with g_object_unref() ++ * See also: #NiceNominationMode ++ * ++ * Since: UNRELEASED ++ * ++ * Returns: The new agent GObject ++ */ ++NiceAgent * ++nice_agent_new_full (GMainContext *ctx, ++ NiceCompatibility compat, ++ gboolean reliable, ++ NiceNominationMode nomination); ++ ++/** + * nice_agent_add_local_address: + * @agent: The #NiceAgent Object + * @addr: The address to listen to +@@ -447,7 +489,6 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat); + gboolean + nice_agent_add_local_address (NiceAgent *agent, NiceAddress *addr); + +- + /** + * nice_agent_add_stream: + * @agent: The #NiceAgent Object +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 7fc2a1d..6827e6e 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -502,7 +502,62 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + if (s_nominated < stream->n_components && + s_waiting_for_nomination) { + keep_timer_going = TRUE; +- if (agent->controlling_mode) { ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ if (agent->nomination_mode == NICE_NOMINATION_MODE_REGULAR && ++ agent->controlling_mode && ++ ((waiting == 0 && s_inprogress == 0) || ++ (s_succeeded + s_discovered) >= 5 * stream->n_components)){ ++ /* ICE 8.1.1.1 Regular nomination ++ * we choose to nominate the valid pair if ++ * there is no pair left waiting or in-progress or ++ * if there are at least 5 valid pairs per stream on average. ++ * ++ * This is the "stopping criterion" described in 8.1.1.1, and is ++ * a "local optimization" between accumulating more valid pairs, ++ * and limiting the time spent waiting for in-progress connections ++ * checks until they finally fail. ++ */ ++ GSList *component_item; ++ ++ for (component_item = stream->components; component_item; ++ component_item = component_item->next) { ++ NiceComponent *component = component_item->data; ++ gboolean already_done = FALSE; ++ ++ /* verify that the choice of the pair to be nominated ++ * has not already been done ++ */ ++ for (k = stream->conncheck_list; k ; k = k->next) { ++ CandidateCheckPair *p = k->data; ++ if (p->component_id == component->id && ++ p->use_candidate_on_next_check) { ++ already_done = TRUE; ++ break; ++ } ++ } ++ ++ /* choose a pair to be nominated in the list of valid ++ * pairs, and add it to the triggered checks list ++ */ ++ if (!already_done) { ++ for (k = stream->conncheck_list; k ; k = k->next) { ++ CandidateCheckPair *p = k->data; ++ /* note: highest priority item selected (list always sorted) */ ++ if (p->component_id == component->id && ++ !p->nominated && ++ !p->use_candidate_on_next_check && ++ p->valid) { ++ nice_debug ("Agent %p : restarting check %p with " ++ "USE-CANDIDATE attrib (regular nomination)", agent, p); ++ p->use_candidate_on_next_check = TRUE; ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ break; /* move to the next component */ ++ } ++ } ++ } ++ } ++ } ++ } else if (agent->controlling_mode) { + GSList *component_item; + + for (component_item = stream->components; component_item; +@@ -1571,10 +1626,40 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + + g_assert (component); + ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent) && ++ agent->controlling_mode) ++ return; ++ + /* step: search for at least one nominated pair */ + for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *pair = i->data; +- if (pair->local == localcand && pair->remote == remotecand) { ++ if (pair->local == localcand && pair->remote == remotecand && ++ NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ /* ICE, 7.2.1.5. Updating the Nominated Flag */ ++ /* note: TCP candidates typically produce peer reflexive ++ * candidate, generating a "discovered" pair that can be ++ * nominated. ++ */ ++ if (pair->valid) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated", ++ agent, pair, pair->foundation); ++ pair->nominated = TRUE; ++ priv_update_selected_pair (agent, component, pair); ++ /* Do not step down to CONNECTED if we're already at state READY*/ ++ if (component->state != NICE_COMPONENT_STATE_READY) { ++ /* step: notify the client of a new component state (must be done ++ * before the possible check list state update step */ ++ agent_signal_component_state_change (agent, ++ stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); ++ } ++ priv_update_check_list_state_for_ready (agent, stream, component); ++ } else if (pair->state == NICE_CHECK_IN_PROGRESS) { ++ pair->mark_nominated_on_response_arrival = TRUE; ++ nice_debug ("Agent %p : pair %p (%s) is in-progress, " ++ "will be nominated on response receipt.", ++ agent, pair, pair->foundation); ++ } ++ } else if (pair->local == localcand && pair->remote == remotecand) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated", agent, pair, pair->foundation); + pair->nominated = TRUE; + if (pair->valid) { +@@ -2174,7 +2259,35 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + pair->prflx_priority, controlling); + } + +- if (cand_use) ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ switch (agent->nomination_mode) { ++ case NICE_NOMINATION_MODE_REGULAR: ++ { ++ /* We are doing regular nomination, so we set the use-candidate ++ * attrib, when the controlling agent decided which valid pair to ++ * resend with this flag in priv_conn_check_tick_stream() ++ */ ++ cand_use = pair->use_candidate_on_next_check; ++ nice_debug ("Agent %p : %s: set cand_use=%d " ++ "(regular nomination).", agent, G_STRFUNC, cand_use); ++ break; ++ } ++ case NICE_NOMINATION_MODE_AGGRESSIVE: ++ { ++ /* We are doing aggressive nomination, we set the use-candidate ++ * attrib in every check we send, when we are the controlling ++ * agent, RFC 5245, 8.1.1.2 ++ */ ++ cand_use = controlling; ++ nice_debug ("Agent %p : %s: set cand_use=%d " ++ "(aggressive nomination).", agent, G_STRFUNC, cand_use); ++ break; ++ } ++ default: ++ /* Nothing to do. */ ++ break; ++ } ++ } else if (cand_use) + pair->nominated = controlling; + + if (uname_len > 0) { +@@ -2781,12 +2894,66 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + local_candidate, remote_candidate); + } + +- ++ /* Note: this assignment helps to reduce the numbers of cases ++ * to be tested. If ok_pair and p refer to distinct pairs, it ++ * means that ok_pair is a discovered peer reflexive one, ++ * caused by the check made on pair p. In that case, the ++ * flags to be tested are on p, but the nominated flag will be ++ * set on ok_pair. When there's no discovered pair, p and ++ * ok_pair refer to the same pair. ++ * To summarize : p is a SUCCEEDED pair, ok_pair is a ++ * DISCOVERED, VALID, and eventually NOMINATED pair. ++ */ + if (!ok_pair) + ok_pair = p; + + /* step: updating nominated flag (ICE 7.1.2.2.4 "Updating the + Nominated Flag" (ID-19) */ ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ nice_debug ("Agent %p : Updating nominated flag (%s): " ++ "ok_pair=%p (%d/%d) p=%p (%d/%d) (ucnc/mnora)", ++ agent, p->local->transport == NICE_CANDIDATE_TRANSPORT_UDP ? ++ "UDP" : "TCP", ++ ok_pair, ok_pair->use_candidate_on_next_check, ++ ok_pair->mark_nominated_on_response_arrival, ++ p, p->use_candidate_on_next_check, ++ p->mark_nominated_on_response_arrival); ++ ++ if (agent->controlling_mode) { ++ switch (agent->nomination_mode) { ++ case NICE_NOMINATION_MODE_REGULAR: ++ if (p->use_candidate_on_next_check) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(regular nomination, control=1, " ++ "use_cand_on_next_check=1).", ++ agent, ok_pair, ok_pair->foundation); ++ ok_pair->nominated = TRUE; ++ } ++ break; ++ case NICE_NOMINATION_MODE_AGGRESSIVE: ++ if (!p->nominated) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(aggressive nomination, control=1).", ++ agent, ok_pair, ok_pair->foundation); ++ ok_pair->nominated = TRUE; ++ } ++ break; ++ default: ++ /* Nothing to do */ ++ break; ++ } ++ } else { ++ if (p->mark_nominated_on_response_arrival) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(%s nomination, control=0, mark_on_response=1).", ++ agent, ok_pair, ok_pair->foundation, ++ agent->nomination_mode == NICE_NOMINATION_MODE_AGGRESSIVE ? ++ "aggressive" : "regular"); ++ ok_pair->nominated = TRUE; ++ } ++ } ++ } ++ + if (ok_pair->nominated == TRUE) { + priv_update_selected_pair (agent, component, ok_pair); + priv_print_conn_check_lists (agent, G_STRFUNC, +@@ -3668,8 +3835,7 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + stun_usage_ice_conncheck_use_candidate (&req); + uint32_t priority = stun_usage_ice_conncheck_priority (&req); + +- if (agent->controlling_mode || +- agent->compatibility == NICE_COMPATIBILITY_GOOGLE || ++ if (agent->compatibility == NICE_COMPATIBILITY_GOOGLE || + agent->compatibility == NICE_COMPATIBILITY_MSN || + agent->compatibility == NICE_COMPATIBILITY_OC2007) + use_candidate = TRUE; +diff --git a/agent/conncheck.h b/agent/conncheck.h +index c204475..0f988de 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -87,6 +87,8 @@ struct _CandidateCheckPair + gboolean nominated; + gboolean timer_restarted; + gboolean valid; ++ gboolean use_candidate_on_next_check; ++ gboolean mark_nominated_on_response_arrival; + guint64 priority; + guint32 prflx_priority; + GTimeVal next_tick; /* next tick timestamp */ +diff --git a/configure.ac b/configure.ac +index 98bbc08..6c106ff 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -57,6 +57,7 @@ AC_PROG_CC + AM_PROG_AR + LT_PREREQ([2.2.6]) + LT_INIT([dlopen win32-dll disable-static]) ++AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums]) + + # Check Operating System + AC_MSG_CHECKING([operating system]) +diff --git a/docs/reference/libnice/libnice-sections.txt b/docs/reference/libnice/libnice-sections.txt +index 88a6cd2..a481106 100644 +--- a/docs/reference/libnice/libnice-sections.txt ++++ b/docs/reference/libnice/libnice-sections.txt +@@ -5,6 +5,7 @@ NiceAgent + NiceComponentState + NiceComponentType + NiceProxyType ++NiceNominationMode + NiceCompatibility + NiceAgentRecvFunc + NiceInputMessage +@@ -12,6 +13,7 @@ NiceOutputMessage + NICE_AGENT_MAX_REMOTE_CANDIDATES + nice_agent_new + nice_agent_new_reliable ++nice_agent_new_full + nice_agent_add_local_address + nice_agent_set_port_range + nice_agent_add_stream +-- +2.13.6 + + +From 4497d9b7afaaea7124db4a2cd13546d9366b5986 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Wed, 22 Jun 2016 15:44:39 +0200 +Subject: [PATCH 27/70] test-nomination: added a new test for the nomination + mode + +Differential Revision: https://phabricator.freedesktop.org/D1107 +--- + tests/Makefile.am | 5 +- + tests/test-nomination.c | 263 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 267 insertions(+), 1 deletion(-) + create mode 100644 tests/test-nomination.c + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 62d5d64..b623764 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -55,7 +55,8 @@ check_PROGRAMS = \ + test-icetcp \ + test-credentials \ + test-turn \ +- test-drop-invalid ++ test-drop-invalid \ ++ test-nomination + + dist_check_SCRIPTS = \ + check-test-fullmode-with-stun.sh \ +@@ -131,6 +132,8 @@ test_turn_LDADD = $(COMMON_LDADD) + + test_drop_invalid_LDADD = $(COMMON_LDADD) + ++test_nomination_LDADD = $(COMMON_LDADD) ++ + test_gstreamer_CFLAGS = $(AM_CFLAGS) $(GST_CHECK_CFLAGS) + test_gstreamer_LDADD = -lnice -L$(top_builddir)/nice/.libs $(GLIB_LIBS) $(GUPNP_LIBS) $(GST_CHECK_LIBS) $(GST_LIBS) + +diff --git a/tests/test-nomination.c b/tests/test-nomination.c +new file mode 100644 +index 0000000..b5a5e5f +--- /dev/null ++++ b/tests/test-nomination.c +@@ -0,0 +1,263 @@ ++#include ++#include ++#include ++ ++#include ++#include ++ ++static NiceComponentState global_lagent_state[2] = { NICE_COMPONENT_STATE_LAST, NICE_COMPONENT_STATE_LAST }; ++static NiceComponentState global_ragent_state[2] = { NICE_COMPONENT_STATE_LAST, NICE_COMPONENT_STATE_LAST }; ++static guint global_components_ready = 0; ++static gboolean global_lagent_gathering_done = FALSE; ++static gboolean global_ragent_gathering_done = FALSE; ++static int global_lagent_cands = 0; ++static int global_ragent_cands = 0; ++ ++static gboolean timer_cb (gpointer pointer) ++{ ++ g_debug ("test-nomination:%s: %p", G_STRFUNC, pointer); ++ ++ /* signal status via a global variable */ ++ ++ /* note: should not be reached, abort */ ++ g_error ("ERROR: test has got stuck, aborting..."); ++ ++ return FALSE; ++} ++ ++static void cb_nice_recv (NiceAgent *agent, guint stream_id, guint component_id, guint len, gchar *buf, gpointer user_data) ++{ ++ g_debug ("test-nomination:%s: %p", G_STRFUNC, user_data); ++ ++ /* XXX: dear compiler, these are for you: */ ++ (void)agent; (void)stream_id; (void)component_id; (void)buf; ++ ++ /* ++ * Lets ignore stun packets that got through ++ */ ++ if (len < 8) ++ return; ++ if (strncmp ("12345678", buf, 8)) ++ return; ++ ++ if (component_id != 1) ++ return; ++} ++ ++static void cb_candidate_gathering_done(NiceAgent *agent, guint stream_id, gpointer data) ++{ ++ g_debug ("test-nomination:%s: %p", G_STRFUNC, data); ++ ++ if (GPOINTER_TO_UINT (data) == 1) ++ global_lagent_gathering_done = TRUE; ++ else if (GPOINTER_TO_UINT (data) == 2) ++ global_ragent_gathering_done = TRUE; ++} ++ ++ ++static void cb_component_state_changed (NiceAgent *agent, guint stream_id, guint component_id, guint state, gpointer data) ++{ ++ gboolean ready_to_connected = FALSE; ++ g_debug ("test-nomination:%s: %p", G_STRFUNC, data); ++ ++ if (GPOINTER_TO_UINT (data) == 1) { ++ if (global_lagent_state[component_id - 1] == NICE_COMPONENT_STATE_READY && ++ state == NICE_COMPONENT_STATE_CONNECTED) ++ ready_to_connected = TRUE; ++ global_lagent_state[component_id - 1] = state; ++ } else if (GPOINTER_TO_UINT (data) == 2) { ++ if (global_ragent_state[component_id - 1] == NICE_COMPONENT_STATE_READY && ++ state == NICE_COMPONENT_STATE_CONNECTED) ++ ready_to_connected = TRUE; ++ global_ragent_state[component_id - 1] = state; ++ } ++ ++ if (state == NICE_COMPONENT_STATE_READY) ++ global_components_ready++; ++ else if (state == NICE_COMPONENT_STATE_CONNECTED && ready_to_connected) ++ global_components_ready--; ++ g_assert (state != NICE_COMPONENT_STATE_FAILED); ++ ++ g_debug ("test-nomination: checks READY %u.", global_components_ready); ++} ++ ++static void cb_new_selected_pair(NiceAgent *agent, guint stream_id, ++ guint component_id, gchar *lfoundation, gchar* rfoundation, gpointer data) ++{ ++ g_debug ("test-nomination:%s: %p", G_STRFUNC, data); ++ ++ if (GPOINTER_TO_UINT (data) == 1) ++ ++global_lagent_cands; ++ else if (GPOINTER_TO_UINT (data) == 2) ++ ++global_ragent_cands; ++} ++ ++static void set_candidates (NiceAgent *from, guint from_stream, ++ NiceAgent *to, guint to_stream, guint component) ++{ ++ GSList *cands = NULL, *i; ++ ++ cands = nice_agent_get_local_candidates (from, from_stream, component); ++ nice_agent_set_remote_candidates (to, to_stream, component, cands); ++ ++ for (i = cands; i; i = i->next) ++ nice_candidate_free ((NiceCandidate *) i->data); ++ g_slist_free (cands); ++} ++ ++static void set_credentials (NiceAgent *lagent, guint lstream, ++ NiceAgent *ragent, guint rstream) ++{ ++ gchar *ufrag = NULL, *password = NULL; ++ ++ nice_agent_get_local_credentials(lagent, lstream, &ufrag, &password); ++ nice_agent_set_remote_credentials (ragent, rstream, ufrag, password); ++ g_free (ufrag); ++ g_free (password); ++ nice_agent_get_local_credentials(ragent, rstream, &ufrag, &password); ++ nice_agent_set_remote_credentials (lagent, lstream, ufrag, password); ++ g_free (ufrag); ++ g_free (password); ++} ++ ++static void ++run_test(NiceNominationMode l_nomination_mode, ++ NiceNominationMode r_nomination_mode) ++{ ++ NiceAgent *lagent, *ragent; /* agent's L and R */ ++ const gchar *localhost; ++ NiceAddress localaddr; ++ guint ls_id, rs_id; ++ gulong timer_id; ++ ++ localhost = "127.0.0.1"; ++ ++ /* step: initialize variables modified by the callbacks */ ++ global_components_ready = 0; ++ global_lagent_gathering_done = FALSE; ++ global_ragent_gathering_done = FALSE; ++ global_lagent_cands = global_ragent_cands = 0; ++ ++ lagent = nice_agent_new_full (NULL, ++ NICE_COMPATIBILITY_RFC5245, ++ FALSE, /* reliable */ ++ l_nomination_mode); ++ ++ ragent = nice_agent_new_full (NULL, ++ NICE_COMPATIBILITY_RFC5245, ++ FALSE, /* reliable */ ++ r_nomination_mode); ++ ++ g_object_set (G_OBJECT (lagent), "ice-tcp", FALSE, NULL); ++ g_object_set (G_OBJECT (ragent), "ice-tcp", FALSE, NULL); ++ ++ g_object_set (G_OBJECT (lagent), "upnp", FALSE, NULL); ++ g_object_set (G_OBJECT (ragent), "upnp", FALSE, NULL); ++ nice_agent_set_software (lagent, "Test-nomination, Left Agent"); ++ nice_agent_set_software (ragent, "Test-nomination, Right Agent"); ++ ++ timer_id = g_timeout_add (30000, timer_cb, NULL); ++ ++ if (!nice_address_set_from_string (&localaddr, localhost)) ++ g_assert_not_reached (); ++ nice_agent_add_local_address (lagent, &localaddr); ++ nice_agent_add_local_address (ragent, &localaddr); ++ ++ g_signal_connect (G_OBJECT (lagent), "candidate-gathering-done", ++ G_CALLBACK (cb_candidate_gathering_done), GUINT_TO_POINTER(1)); ++ g_signal_connect (G_OBJECT (ragent), "candidate-gathering-done", ++ G_CALLBACK (cb_candidate_gathering_done), GUINT_TO_POINTER (2)); ++ g_signal_connect (G_OBJECT (lagent), "component-state-changed", ++ G_CALLBACK (cb_component_state_changed), GUINT_TO_POINTER (1)); ++ g_signal_connect (G_OBJECT (ragent), "component-state-changed", ++ G_CALLBACK (cb_component_state_changed), GUINT_TO_POINTER (2)); ++ g_signal_connect (G_OBJECT (lagent), "new-selected-pair", ++ G_CALLBACK (cb_new_selected_pair), GUINT_TO_POINTER(1)); ++ g_signal_connect (G_OBJECT (ragent), "new-selected-pair", ++ G_CALLBACK (cb_new_selected_pair), GUINT_TO_POINTER (2)); ++ ++ g_object_set (G_OBJECT (lagent), "controlling-mode", TRUE, NULL); ++ g_object_set (G_OBJECT (ragent), "controlling-mode", FALSE, NULL); ++ ++ ls_id = nice_agent_add_stream (lagent, 1); ++ rs_id = nice_agent_add_stream (ragent, 1); ++ g_assert (ls_id > 0); ++ g_assert (rs_id > 0); ++ ++ /* Gather candidates and test nice_agent_set_port_range */ ++ g_assert (nice_agent_gather_candidates (lagent, ls_id) == TRUE); ++ g_assert (nice_agent_gather_candidates (ragent, rs_id) == TRUE); ++ ++ nice_agent_attach_recv (lagent, ls_id, NICE_COMPONENT_TYPE_RTP, ++ g_main_context_default (), cb_nice_recv, GUINT_TO_POINTER (1)); ++ nice_agent_attach_recv (ragent, rs_id, NICE_COMPONENT_TYPE_RTP, ++ g_main_context_default (), cb_nice_recv, GUINT_TO_POINTER (2)); ++ ++ g_debug ("test-nomination: Added streams, running context until 'candidate-gathering-done'..."); ++ while (!global_lagent_gathering_done) ++ g_main_context_iteration (NULL, TRUE); ++ g_assert (global_lagent_gathering_done == TRUE); ++ while (!global_ragent_gathering_done) ++ g_main_context_iteration (NULL, TRUE); ++ g_assert (global_ragent_gathering_done == TRUE); ++ ++ set_credentials (lagent, ls_id, ragent, rs_id); ++ ++ set_candidates (ragent, rs_id, lagent, ls_id, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (lagent, ls_id, ragent, rs_id, NICE_COMPONENT_TYPE_RTP); ++ ++ while (global_lagent_state[0] != NICE_COMPONENT_STATE_READY || ++ global_ragent_state[0] != NICE_COMPONENT_STATE_READY) ++ g_main_context_iteration (NULL, TRUE); ++ g_assert (global_lagent_state[0] == NICE_COMPONENT_STATE_READY); ++ g_assert (global_ragent_state[0] == NICE_COMPONENT_STATE_READY); ++ ++ nice_agent_remove_stream (lagent, ls_id); ++ nice_agent_remove_stream (ragent, rs_id); ++ ++ g_source_remove (timer_id); ++ ++ g_clear_object(&lagent); ++ g_clear_object(&ragent); ++} ++ ++static void ++regular (void) ++{ ++ run_test(NICE_NOMINATION_MODE_REGULAR, NICE_NOMINATION_MODE_REGULAR); ++} ++ ++static void ++aggressive (void) ++{ ++ run_test(NICE_NOMINATION_MODE_AGGRESSIVE, NICE_NOMINATION_MODE_AGGRESSIVE); ++} ++ ++static void ++mixed_ra (void) ++{ ++ run_test(NICE_NOMINATION_MODE_REGULAR, NICE_NOMINATION_MODE_AGGRESSIVE); ++} ++ ++static void ++mixed_ar (void) ++{ ++ run_test(NICE_NOMINATION_MODE_AGGRESSIVE, NICE_NOMINATION_MODE_REGULAR); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ int ret; ++ ++ g_test_init (&argc, &argv, NULL); ++ ++ g_test_add_func ("/nice/nomination/regular", regular); ++ g_test_add_func ("/nice/nomination/aggressive", aggressive); ++ g_test_add_func ("/nice/nomination/mixed_ra", mixed_ra); ++ g_test_add_func ("/nice/nomination/mixed_ar", mixed_ar); ++ ++ ret = g_test_run (); ++ ++ return ret; ++} +-- +2.13.6 + + +From 58d061df8f5425dc1add9c6030a2f891ebda4616 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 7 Mar 2016 16:35:09 +0100 +Subject: [PATCH 28/70] conncheck: update pair valid property selectively + +With this patch, we fix a corner case when the succeeded pair is a +peer-reflexive candidate pair, that already has been discovered +previously, In this case, the current pair -p- should not be marked +valid, because the valid flag is already set on the discovered pair. + +Differential Revision: https://phabricator.freedesktop.org/D1124 +--- + agent/conncheck.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 6827e6e..ef8df68 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -2760,6 +2760,13 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + } + + if (new_pair) { ++ /* note: when new_pair is distinct from p, it means new_pair is a ++ * previously discovered peer-reflexive candidate pair, so we don't ++ * set the valid flag on p in this case, because the valid flag is ++ * already set on the discovered pair. ++ */ ++ if (new_pair == p) ++ p->valid = TRUE; + p->state = NICE_CHECK_SUCCEEDED; + nice_debug ("Agent %p : conncheck %p SUCCEEDED.", agent, p); + priv_conn_check_unfreeze_related (agent, stream, p); +@@ -2788,6 +2795,10 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + if (local_cand) + new_pair = priv_add_peer_reflexive_pair (agent, stream->id, component, + local_cand, p); ++ /* note: this is same as "adding to VALID LIST" in the spec ++ text */ ++ if (new_pair) ++ new_pair->valid = TRUE; + /* step: The agent sets the state of the pair that *generated* the check to + * Succeeded, RFC 5245, 7.1.3.2.3, "Updating Pair States" + */ +@@ -2796,12 +2807,9 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + agent, p, new_pair); + } + +- /* note: this is same as "adding to VALID LIST" in the spec +- text */ +- if (new_pair) { +- new_pair->valid = TRUE; ++ if (new_pair && new_pair->valid) + nice_component_add_valid_candidate (component, remote_candidate); +- } ++ + + return new_pair; + } +-- +2.13.6 + + +From 15c0546f624113b8c0546a1f883a48bff7020f1b Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 19 Apr 2016 17:06:32 +0200 +Subject: [PATCH 29/70] conncheck: improve the selection of the pairs to be + checked + +This patch aims to implement more closely the algorithm described +in RFC 5245 indicating how pairs are transitionned from state Frozen +to Waiting. This is described in 7.1.3.2 when a check succeeded, and +correspond to modifications in function priv_conn_check_unfreeze_related(). +This is also described in 5.7.4 when defining the initial state of the +pairs in a conncheck, and correspond to modifications in function +priv_conn_check_unfreeze_next(). + +This patch introduces the notion of active and frozen check list. It +allows us to define the timer restranmission delay as described in 16.1. + +Another modification in priv_conn_check_tick_unlocked() is that every +stream in handled consecutively, and in an independant way. The pacing +was previously of a single STUN request emitted per callback, it is now +of a triggered check per callback OR a single STUN per callback AND per +stream per callback. + +The description of ordinary checks per stream in 5.8 is detailled in +function priv_conn_check_tick_stream(), and a remaining of the code +used to nominate a pair by the controlling agent is put in a dedicated +function priv_conn_check_tick_stream_nominate() + +Differential Revision: https://phabricator.freedesktop.org/D813 +--- + agent/conncheck.c | 535 ++++++++++++++++++++++++++++++++++++++---------------- + agent/stream.c | 21 --- + agent/stream.h | 3 - + 3 files changed, 381 insertions(+), 178 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index ef8df68..6b1b7e3 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -212,6 +212,89 @@ priv_get_pair_from_triggered_check_queue (NiceAgent *agent) + } + + /* ++ * Check if the conncheck list if Active according to ++ * ICE spec, 5.7.4 (Computing States) ++ * ++ * note: the ICE spec in unclear about that, but the check list should ++ * be considered active when there is at least a pair in Waiting state ++ * OR a pair in In-Progress state. ++ */ ++static gboolean ++priv_is_checklist_active (NiceStream *stream) ++{ ++ GSList *i; ++ ++ for (i = stream->conncheck_list; i ; i = i->next) { ++ CandidateCheckPair *p = i->data; ++ if (p->state == NICE_CHECK_WAITING || p->state == NICE_CHECK_IN_PROGRESS) ++ return TRUE; ++ } ++ return FALSE; ++} ++ ++/* ++ * Check if the conncheck list if Frozen according to ++ * ICE spec, 5.7.4 (Computing States) ++ */ ++static gboolean ++priv_is_checklist_frozen (NiceStream *stream) ++{ ++ GSList *i; ++ ++ if (stream->conncheck_list == NULL) ++ return FALSE; ++ ++ for (i = stream->conncheck_list; i ; i = i->next) { ++ CandidateCheckPair *p = i->data; ++ if (p->state != NICE_CHECK_FROZEN) ++ return FALSE; ++ } ++ return TRUE; ++} ++ ++/* ++ * Check if all components of the stream have ++ * a valid pair (used for ICE spec, 7.1.3.2.3, point 2.) ++ */ ++static gboolean ++priv_all_components_have_valid_pair (NiceStream *stream) ++{ ++ guint i; ++ GSList *j; ++ ++ for (i = 1; i <= stream->n_components; i++) { ++ for (j = stream->conncheck_list; j ; j = j->next) { ++ CandidateCheckPair *p = j->data; ++ if (p->component_id == i && p->valid) ++ break; ++ } ++ if (j == NULL) ++ return FALSE; ++ } ++ return TRUE; ++} ++ ++/* ++ * Check if the foundation in parameter matches the foundation ++ * of a valid pair in the conncheck list [of stream] (used for ICE spec, ++ * 7.1.3.2.3, point 2.) ++ */ ++static gboolean ++priv_foundation_matches_a_valid_pair (const gchar *foundation, NiceStream *stream) ++{ ++ GSList *i; ++ ++ for (i = stream->conncheck_list; i ; i = i->next) { ++ CandidateCheckPair *p = i->data; ++ if (p->valid && ++ strncmp (p->foundation, foundation, ++ NICE_CANDIDATE_PAIR_MAX_FOUNDATION) == 0) ++ return TRUE; ++ } ++ return FALSE; ++} ++ ++/* + * Finds the next connectivity check in WAITING state. + */ + static CandidateCheckPair *priv_conn_check_find_next_waiting (GSList *conn_check_list) +@@ -220,7 +303,6 @@ static CandidateCheckPair *priv_conn_check_find_next_waiting (GSList *conn_check + + /* note: list is sorted in priority order to first waiting check has + * the highest priority */ +- + for (i = conn_check_list; i ; i = i->next) { + CandidateCheckPair *p = i->data; + if (p->state == NICE_CHECK_WAITING) +@@ -231,6 +313,74 @@ static CandidateCheckPair *priv_conn_check_find_next_waiting (GSList *conn_check + } + + /* ++ * Finds the next connectivity check in FROZEN state. ++ */ ++static CandidateCheckPair * ++priv_conn_check_find_next_frozen (GSList *conn_check_list) ++{ ++ GSList *i; ++ ++ /* note: list is sorted in priority order to first frozen check has ++ * the highest priority */ ++ for (i = conn_check_list; i ; i = i->next) { ++ CandidateCheckPair *p = i->data; ++ if (p->state == NICE_CHECK_FROZEN) ++ return p; ++ } ++ ++ return NULL; ++} ++ ++/* ++ * Returns the number of check lists of the agent ++ */ ++static guint ++priv_number_of_check_lists (NiceAgent *agent) ++{ ++ guint n = 0; ++ GSList *i; ++ ++ for (i = agent->streams; i ; i = i->next) { ++ NiceStream *stream = i->data; ++ if (stream->conncheck_list != NULL) ++ n++; ++ } ++ return n; ++} ++ ++/* ++ * Returns the number of active check lists of the agent ++ */ ++static guint ++priv_number_of_active_check_lists (NiceAgent *agent) ++{ ++ guint n = 0; ++ GSList *i; ++ ++ for (i = agent->streams; i ; i = i->next) ++ if (priv_is_checklist_active (i->data)) ++ n++; ++ return n; ++} ++ ++/* ++ * Returns the first stream of the agent having a Frozen ++ * connection check list ++ */ ++static NiceStream * ++priv_find_first_frozen_check_list (NiceAgent *agent) ++{ ++ GSList *i; ++ ++ for (i = agent->streams; i ; i = i->next) { ++ NiceStream *stream = i->data; ++ if (priv_is_checklist_frozen (stream)) ++ return stream; ++ } ++ return NULL; ++} ++ ++/* + * Initiates a new connectivity check for a ICE candidate pair. + * + * @return TRUE on success, FALSE on error +@@ -248,58 +398,55 @@ static gboolean priv_conn_check_initiate (NiceAgent *agent, CandidateCheckPair * + /* + * Unfreezes the next connectivity check in the list. Follows the + * algorithm (2.) defined in 5.7.4 (Computing States) of the ICE spec +- * (ID-19), with some exceptions (see comments in code). ++ * (RFC5245) + * + * See also sect 7.1.2.2.3 (Updating Pair States), and + * priv_conn_check_unfreeze_related(). + * + * @return TRUE on success, and FALSE if no frozen candidates were found. + */ +-static gboolean priv_conn_check_unfreeze_next (NiceAgent *agent) ++static gboolean priv_conn_check_unfreeze_next (NiceAgent *agent, NiceStream *stream) + { +- CandidateCheckPair *pair = NULL; + GSList *i, *j; +- +- /* XXX: the unfreezing is implemented a bit differently than in the +- * current ICE spec, but should still be interoperate: +- * - checks are not grouped by foundation +- * - one frozen check is unfrozen (lowest component-id, highest +- * priority) +- */ ++ GSList *found_list = NULL; ++ gboolean result = FALSE; + + priv_print_conn_check_lists (agent, G_STRFUNC, NULL); + +- for (i = agent->streams; i; i = i->next) { +- NiceStream *stream = i->data; +- guint64 max_frozen_priority = 0; ++ for (i = stream->conncheck_list; i ; i = i->next) { ++ CandidateCheckPair *p1 = i->data; ++ CandidateCheckPair *pair = NULL; ++ guint lowest_component_id = stream->n_components + 1; ++ guint64 highest_priority = 0; + ++ if (g_slist_find_custom (found_list, p1->foundation, (GCompareFunc)strcmp)) ++ continue; ++ found_list = g_slist_prepend (found_list, p1->foundation); + + for (j = stream->conncheck_list; j ; j = j->next) { +- CandidateCheckPair *p = j->data; +- +- /* XXX: the prio check could be removed as the pairs are sorted +- * already */ +- +- if (p->state == NICE_CHECK_FROZEN) { +- if (p->priority > max_frozen_priority) { +- max_frozen_priority = p->priority; +- pair = p; +- } ++ CandidateCheckPair *p2 = i->data; ++ if (strncmp (p2->foundation, p1->foundation, ++ NICE_CANDIDATE_PAIR_MAX_FOUNDATION) == 0) { ++ if (p2->component_id < lowest_component_id || ++ (p2->component_id == lowest_component_id && ++ p2->priority > highest_priority)) { ++ pair = p2; ++ lowest_component_id = p2->component_id; ++ highest_priority = p2->priority; ++ } + } + } + +- if (pair) +- break; +- } +- +- if (pair) { +- nice_debug ("Agent %p : Pair %p with s/c-id %u/%u (%s) unfrozen.", agent, pair, pair->stream_id, pair->component_id, pair->foundation); +- pair->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, pair); +- return TRUE; ++ if (pair) { ++ nice_debug ("Agent %p : Pair %p with s/c-id %u/%u (%s) unfrozen.", ++ agent, pair, pair->stream_id, pair->component_id, pair->foundation); ++ pair->state = NICE_CHECK_WAITING; ++ nice_debug ("Agent %p : pair %p state WAITING", agent, pair); ++ result = TRUE; ++ } + } +- +- return FALSE; ++ g_slist_free (found_list); ++ return result; + } + + /* +@@ -316,7 +463,6 @@ static gboolean priv_conn_check_unfreeze_next (NiceAgent *agent) + static void priv_conn_check_unfreeze_related (NiceAgent *agent, NiceStream *stream, CandidateCheckPair *ok_check) + { + GSList *i, *j; +- guint unfrozen = 0; + + g_assert (ok_check); + g_assert (ok_check->state == NICE_CHECK_SUCCEEDED); +@@ -336,40 +482,59 @@ static void priv_conn_check_unfreeze_related (NiceAgent *agent, NiceStream *stre + nice_debug ("Agent %p : Unfreezing check %p (after successful check %p).", agent, p, ok_check); + p->state = NICE_CHECK_WAITING; + nice_debug ("Agent %p : pair %p state WAITING", agent, p); +- ++unfrozen; + } + } + } + + /* step: perform the step (2) of 'Updating Pair States' */ + stream = agent_find_stream (agent, ok_check->stream_id); +- if (nice_stream_all_components_ready (stream)) { +- /* step: unfreeze checks from other streams */ ++ if (priv_all_components_have_valid_pair (stream)) { + for (i = agent->streams; i ; i = i->next) { ++ /* the agent examines the check list for each other ++ * media stream in turn ++ */ + NiceStream *s = i->data; +- for (j = stream->conncheck_list; j ; j = j->next) { +- CandidateCheckPair *p = j->data; +- +- if (p->stream_id == s->id && +- p->stream_id != ok_check->stream_id) { +- if (p->state == NICE_CHECK_FROZEN && +- strcmp (p->foundation, ok_check->foundation) == 0) { ++ if (s->id == ok_check->stream_id) ++ continue; ++ if (priv_is_checklist_active (s)) { ++ /* checklist is Active ++ */ ++ for (j = s->conncheck_list; j ; j = j->next) { ++ CandidateCheckPair *p = j->data; ++ if (p->state == NICE_CHECK_FROZEN && ++ priv_foundation_matches_a_valid_pair (p->foundation, stream)) { + nice_debug ("Agent %p : Unfreezing check %p from stream %u (after successful check %p).", agent, p, s->id, ok_check); + p->state = NICE_CHECK_WAITING; + nice_debug ("Agent %p : pair %p state WAITING", agent, p); +- ++unfrozen; +- +- } +- } ++ } ++ } ++ } else if (priv_is_checklist_frozen (s)) { ++ /* checklist is Frozen ++ */ ++ gboolean match_found = FALSE; ++ /* check if there is one pair in the check list whose ++ * foundation matches a pair in the valid list under ++ * consideration ++ */ ++ for (j = s->conncheck_list; j ; j = j->next) { ++ CandidateCheckPair *p = j->data; ++ if (priv_foundation_matches_a_valid_pair (p->foundation, stream)) { ++ match_found = TRUE; ++ nice_debug ("Agent %p : Unfreezing check %p from stream %u (after successful check %p).", agent, p, s->id, ok_check); ++ p->state = NICE_CHECK_WAITING; ++ nice_debug ("Agent %p : pair %p state WAITING", agent, p); ++ } ++ } ++ ++ if (!match_found) { ++ /* set the pair with the lowest component ID ++ * and highest priority to Waiting ++ */ ++ priv_conn_check_unfreeze_next (agent, s); ++ } + } +- /* note: only unfreeze check from one stream at a time */ +- if (unfrozen) +- break; + } + } +- +- if (unfrozen == 0) +- priv_conn_check_unfreeze_next (agent); + } + + static void +@@ -400,14 +565,13 @@ candidate_check_pair_fail (NiceStream *stream, NiceAgent *agent, CandidateCheckP + * + * @return will return FALSE when no more pending timers. + */ +-static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agent, GTimeVal *now, gboolean *stun_transmitted) ++static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agent, GTimeVal *now) + { + gboolean keep_timer_going = FALSE; +- guint s_inprogress = 0, s_succeeded = 0, s_discovered = 0, +- s_nominated = 0, s_waiting_for_nomination = 0, s_valid = 0; +- guint frozen = 0, waiting = 0; +- GSList *i, *k; ++ GSList *i; ++ CandidateCheckPair *pair; + ++ /* step: process ongoing STUN transactions */ + for (i = stream->conncheck_list; i ; i = i->next) { + CandidateCheckPair *p = i->data; + +@@ -451,7 +615,6 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + p->next_tick = *now; + g_time_val_add (&p->next_tick, timeout * 1000); + +- *stun_transmitted = TRUE; + return TRUE; + } + case STUN_USAGE_TIMER_RETURN_SUCCESS: +@@ -471,7 +634,57 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + } + } + } ++ } + ++ /* step: perform an ordinary check, ICE spec, 5.8 "Scheduling Checks" ++ * note: This code is executed when the triggered checks list is ++ * empty, and when no STUN message has been sent (pacing constraint) ++ */ ++ pair = priv_conn_check_find_next_waiting (stream->conncheck_list); ++ if (pair) { ++ priv_conn_check_initiate (agent, pair); ++ return TRUE; ++ } ++ ++ /* note: this is unclear in the ICE spec, but a check list in Frozen ++ * state (where all pairs are in Frozen state) is not supposed to ++ * change its state by an ordinary check, but only by the success of ++ * checks in other check lists, in priv_conn_check_unfreeze_related(). ++ * The underlying idea is to concentrate the checks on a single check ++ * list initially. ++ */ ++ if (priv_is_checklist_frozen (stream)) ++ return keep_timer_going; ++ ++ /* step: ordinary check continued, if there's no pair in the waiting ++ * state, pick a pair in the frozen state ++ */ ++ pair = priv_conn_check_find_next_frozen (stream->conncheck_list); ++ if (pair) { ++ pair->state = NICE_CHECK_WAITING; ++ nice_debug ("Agent %p : pair %p state WAITING", agent, pair); ++ priv_conn_check_initiate (agent, pair); ++ return TRUE; ++ } ++ return keep_timer_going; ++} ++ ++static gboolean ++priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) ++{ ++ gboolean keep_timer_going = FALSE; ++ guint s_inprogress = 0; ++ guint s_succeeded = 0; ++ guint s_discovered = 0; ++ guint s_nominated = 0; ++ guint s_waiting_for_nomination = 0; ++ guint s_valid = 0; ++ guint frozen = 0; ++ guint waiting = 0; ++ GSList *i, *k; ++ ++ for (i = stream->conncheck_list; i ; i = i->next) { ++ CandidateCheckPair *p = i->data; + if (p->state == NICE_CHECK_FROZEN) + ++frozen; + else if (p->state == NICE_CHECK_IN_PROGRESS) +@@ -504,13 +717,13 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + keep_timer_going = TRUE; + if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { + if (agent->nomination_mode == NICE_NOMINATION_MODE_REGULAR && +- agent->controlling_mode && +- ((waiting == 0 && s_inprogress == 0) || +- (s_succeeded + s_discovered) >= 5 * stream->n_components)){ ++ agent->controlling_mode) { ++#define NICE_MIN_NUMBER_OF_VALID_PAIRS 2 + /* ICE 8.1.1.1 Regular nomination +- * we choose to nominate the valid pair if +- * there is no pair left waiting or in-progress or +- * if there are at least 5 valid pairs per stream on average. ++ * we choose to nominate the valid pair of a component if ++ * - there is no pair left frozen, waiting or in-progress, or ++ * - if there are at least two valid pairs, or ++ * - if there is at least one valid pair of type HOST-HOST + * + * This is the "stopping criterion" described in 8.1.1.1, and is + * a "local optimization" between accumulating more valid pairs, +@@ -523,36 +736,63 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + component_item = component_item->next) { + NiceComponent *component = component_item->data; + gboolean already_done = FALSE; ++ gboolean stopping_criterion = FALSE; ++ guint p_valid = 0; ++ guint p_frozen = 0; ++ guint p_waiting = 0; ++ guint p_inprogress = 0; ++ guint p_host_host_valid = 0; + + /* verify that the choice of the pair to be nominated + * has not already been done + */ + for (k = stream->conncheck_list; k ; k = k->next) { + CandidateCheckPair *p = k->data; +- if (p->component_id == component->id && +- p->use_candidate_on_next_check) { +- already_done = TRUE; +- break; ++ if (p->component_id == component->id) { ++ if (p->use_candidate_on_next_check) ++ already_done = TRUE; ++ if (p->state == NICE_CHECK_FROZEN) ++ p_frozen++; ++ else if (p->state == NICE_CHECK_WAITING) ++ p_waiting++; ++ else if (p->state == NICE_CHECK_IN_PROGRESS) ++ p_inprogress++; ++ if (p->valid) ++ p_valid++; ++ if (p->valid && ++ p->local->type == NICE_CANDIDATE_TYPE_HOST && ++ p->remote->type == NICE_CANDIDATE_TYPE_HOST) ++ p_host_host_valid++; + } + } + +- /* choose a pair to be nominated in the list of valid +- * pairs, and add it to the triggered checks list ++ if (already_done) ++ continue; ++ ++ stopping_criterion = ++ (p_host_host_valid > 0 || ++ p_valid >= NICE_MIN_NUMBER_OF_VALID_PAIRS || ++ (p_waiting == 0 && p_inprogress == 0 && p_frozen == 0)); ++ ++ if (!stopping_criterion) ++ continue; ++ ++ /* when the stopping criterion is satisfied, we choose ++ * a pair to be nominated in the list of valid pairs, ++ * and add it to the triggered checks list + */ +- if (!already_done) { +- for (k = stream->conncheck_list; k ; k = k->next) { +- CandidateCheckPair *p = k->data; +- /* note: highest priority item selected (list always sorted) */ +- if (p->component_id == component->id && +- !p->nominated && +- !p->use_candidate_on_next_check && +- p->valid) { +- nice_debug ("Agent %p : restarting check %p with " +- "USE-CANDIDATE attrib (regular nomination)", agent, p); +- p->use_candidate_on_next_check = TRUE; +- priv_add_pair_to_triggered_check_queue (agent, p); +- break; /* move to the next component */ +- } ++ for (k = stream->conncheck_list; k ; k = k->next) { ++ CandidateCheckPair *p = k->data; ++ /* note: highest priority item selected (list always sorted) */ ++ if (p->component_id == component->id && ++ !p->nominated && ++ !p->use_candidate_on_next_check && ++ p->valid) { ++ nice_debug ("Agent %p : restarting check %p with " ++ "USE-CANDIDATE attrib (regular nomination)", agent, p); ++ p->use_candidate_on_next_check = TRUE; ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ break; /* move to the next component */ + } + } + } +@@ -615,70 +855,55 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + { + CandidateCheckPair *pair = NULL; + gboolean keep_timer_going = FALSE; +- gboolean res; +- /* note: we try to only generate a single stun transaction per timer +- * callback, to respect some pacing of STUN transaction, as per +- * appendix B.1 of ICE spec. +- */ +- gboolean stun_transmitted = FALSE; + GSList *i, *j; + GTimeVal now; + +- /* step: process ongoing STUN transactions */ + g_get_current_time (&now); + +- for (j = agent->streams; j; j = j->next) { +- NiceStream *stream = j->data; +- res = priv_conn_check_tick_stream (stream, agent, &now, &stun_transmitted); +- if (res) +- keep_timer_going = res; +- if (stun_transmitted) +- return TRUE; +- } +- +- /* step: first initiate a conncheck with a pair from the triggered list */ +- pair = priv_get_pair_from_triggered_check_queue (agent); +- +- if (pair) { +- priv_print_conn_check_lists (agent, G_STRFUNC, +- ", got a pair from triggered check list"); +- priv_conn_check_initiate (agent, pair); ++ /* the conncheck really starts when we have built ++ * a connection check list for each stream ++ */ ++ if (priv_number_of_check_lists (agent) < g_slist_length (agent->streams)) + return TRUE; +- } + +- /* step: when the triggered list is empty, +- * find the highest priority waiting check and send it */ +- for (i = agent->streams; i ; i = i->next) { +- NiceStream *stream = i->data; +- +- pair = priv_conn_check_find_next_waiting (stream->conncheck_list); +- if (pair) +- break; ++ /* configure the initial state of the check lists of the agent ++ * as described in ICE spec, 5.7.4 ++ * ++ * if all pairs in all check lists are in frozen state, then ++ * we are in the initial state (5.7.4, point 1.) ++ */ ++ if (priv_number_of_active_check_lists (agent) == 0) { ++ /* set some pairs of the first stream in the waiting state ++ * ICE spec, 5.7.4, point 2. ++ * ++ * note: we adapt the ICE spec here, by selecting the first ++ * frozen check list, which is not necessarily the check ++ * list of the first stream (the first stream may be completed) ++ */ ++ NiceStream *stream = priv_find_first_frozen_check_list (agent); ++ if (stream) ++ priv_conn_check_unfreeze_next (agent, stream); + } + ++ /* step: perform a test from the triggered checks list, ++ * ICE spec, 5.8 "Scheduling Checks" ++ */ ++ pair = priv_get_pair_from_triggered_check_queue (agent); ++ + if (pair) { + priv_conn_check_initiate (agent, pair); + return TRUE; + } + +- /* step: when there's no pair in the Waiting state, +- * unfreeze a new pair and check it ++ /* step: process ongoing STUN transactions and ++ * perform an ordinary check, ICE spec, 5.8, "Scheduling Checks" + */ +- priv_conn_check_unfreeze_next (agent); +- + for (i = agent->streams; i ; i = i->next) { + NiceStream *stream = i->data; +- +- pair = priv_conn_check_find_next_waiting (stream->conncheck_list); +- if (pair) +- break; +- } +- +- if (pair) { +- priv_print_conn_check_lists (agent, G_STRFUNC, +- ", got a pair in Waiting state"); +- priv_conn_check_initiate (agent, pair); +- return TRUE; ++ if (priv_conn_check_tick_stream (stream, agent, &now)) ++ keep_timer_going = TRUE; ++ if (priv_conn_check_tick_stream_nominate (stream, agent)) ++ keep_timer_going = TRUE; + } + + /* step: stop timer if no work left */ +@@ -2169,30 +2394,28 @@ size_t priv_get_password (NiceAgent *agent, NiceStream *stream, + + /* Implement the computation specific in RFC 5245 section 16 */ + +-static unsigned int priv_compute_conncheck_timer (NiceAgent *agent) ++static unsigned int priv_compute_conncheck_timer (NiceAgent *agent, NiceStream *stream) + { +- GSList *item1, *item2; ++ GSList *i; + guint waiting_and_in_progress = 0; ++ guint n = 0; + unsigned int rto = 0; + +- +- for (item1 = agent->streams; item1; item1 = item1->next) { +- NiceStream *stream = item1->data;; +- for (item2 = stream->conncheck_list; item2; item2 = item2->next) { +- CandidateCheckPair *pair = item2->data; +- +- if (pair->state == NICE_CHECK_IN_PROGRESS || +- pair->state == NICE_CHECK_WAITING) +- waiting_and_in_progress++; +- } ++ for (i = stream->conncheck_list; i ; i = i->next) { ++ CandidateCheckPair *p = i->data; ++ if (p->state == NICE_CHECK_IN_PROGRESS || ++ p->state == NICE_CHECK_WAITING) ++ waiting_and_in_progress++; + } + +- rto = agent->timer_ta * waiting_and_in_progress; ++ n = priv_number_of_active_check_lists (agent); ++ rto = agent->timer_ta * n * waiting_and_in_progress; + + /* We assume non-reliable streams are RTP, so we use 100 as the max */ +- nice_debug ("Agent %p : timer set to %dms (waiting+in_progress=%d)", ++ nice_debug ("Agent %p : timer set to %dms, " ++ "waiting+in_progress=%d, nb_active=%d", + agent, agent->reliable ? MAX (rto, 500) : MAX (rto, 100), +- waiting_and_in_progress); ++ waiting_and_in_progress, n); + if (agent->reliable) + return MAX (rto, 500); + else +@@ -2312,7 +2535,7 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + stun_timer_start_reliable(&pair->timer, agent->stun_reliable_timeout); + } else { + stun_timer_start (&pair->timer, +- priv_compute_conncheck_timer (agent), ++ priv_compute_conncheck_timer (agent, stream), + agent->stun_max_retransmissions); + } + +@@ -2477,7 +2700,7 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + p->timer_restarted ? "no" : "yes"); + if (!nice_socket_is_reliable (p->sockptr) && !p->timer_restarted) { + stun_timer_start (&p->timer, +- priv_compute_conncheck_timer (agent), ++ priv_compute_conncheck_timer (agent, stream), + agent->stun_max_retransmissions); + p->timer_restarted = TRUE; + } +@@ -2769,7 +2992,6 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + p->valid = TRUE; + p->state = NICE_CHECK_SUCCEEDED; + nice_debug ("Agent %p : conncheck %p SUCCEEDED.", agent, p); +- priv_conn_check_unfreeze_related (agent, stream, p); + nice_component_add_valid_candidate (component, remote_candidate); + } + else { +@@ -2894,7 +3116,6 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + g_assert_not_reached (); + nice_debug ("Agent %p : Mapped address not found." + " conncheck %p SUCCEEDED.", agent, p); +- priv_conn_check_unfreeze_related (agent, stream, p); + nice_component_add_valid_candidate (component, p->remote); + } else { + ok_pair = priv_process_response_check_for_reflexive (agent, +@@ -2902,6 +3123,12 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + local_candidate, remote_candidate); + } + ++ /* note: The success of this check might also ++ * cause the state of other checks to change as well, ICE ++ * spec 7.1.3.2.3 ++ */ ++ priv_conn_check_unfreeze_related (agent, stream, p); ++ + /* Note: this assignment helps to reduce the numbers of cases + * to be tested. If ok_pair and p refer to distinct pairs, it + * means that ok_pair is a discovered peer reflexive one, +diff --git a/agent/stream.c b/agent/stream.c +index 8121e12..533ff15 100644 +--- a/agent/stream.c ++++ b/agent/stream.c +@@ -104,27 +104,6 @@ nice_stream_find_component_by_id (NiceStream *stream, guint id) + } + + /* +- * Returns true if all components of the stream are either +- * 'CONNECTED' or 'READY' (connected plus nominated). +- */ +-gboolean +-nice_stream_all_components_ready (NiceStream *stream) +-{ +- GSList *i; +- +- for (i = stream->components; i; i = i->next) { +- NiceComponent *component = i->data; +- if (component && +- !(component->state == NICE_COMPONENT_STATE_CONNECTED || +- component->state == NICE_COMPONENT_STATE_READY)) +- return FALSE; +- } +- +- return TRUE; +-} +- +- +-/* + * Initialized the local crendentials for the stream. + */ + void +diff --git a/agent/stream.h b/agent/stream.h +index f9188cb..954ba66 100644 +--- a/agent/stream.h ++++ b/agent/stream.h +@@ -103,9 +103,6 @@ nice_stream_new (guint n_components, NiceAgent *agent); + void + nice_stream_close (NiceStream *stream); + +-gboolean +-nice_stream_all_components_ready (NiceStream *stream); +- + NiceComponent * + nice_stream_find_component_by_id (NiceStream *stream, guint id); + +-- +2.13.6 + + +From ead3453d04fc70865d176ab073636f8b9078cbbc Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 12 Apr 2016 13:20:38 +0200 +Subject: [PATCH 30/70] conncheck: invoke the debug dump in more places + +Differential Revision: https://phabricator.freedesktop.org/D1123 +--- + agent/conncheck.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 6b1b7e3..2d2224d 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -642,6 +642,8 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + */ + pair = priv_conn_check_find_next_waiting (stream->conncheck_list); + if (pair) { ++ priv_print_conn_check_lists (agent, G_STRFUNC, ++ ", got a pair in Waiting state"); + priv_conn_check_initiate (agent, pair); + return TRUE; + } +@@ -661,6 +663,8 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + */ + pair = priv_conn_check_find_next_frozen (stream->conncheck_list); + if (pair) { ++ priv_print_conn_check_lists (agent, G_STRFUNC, ++ ", got a pair in Frozen state"); + pair->state = NICE_CHECK_WAITING; + nice_debug ("Agent %p : pair %p state WAITING", agent, pair); + priv_conn_check_initiate (agent, pair); +@@ -891,6 +895,8 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + pair = priv_get_pair_from_triggered_check_queue (agent); + + if (pair) { ++ priv_print_conn_check_lists (agent, G_STRFUNC, ++ ", got a pair from triggered check list"); + priv_conn_check_initiate (agent, pair); + return TRUE; + } +-- +2.13.6 + + +From 2fd7808419f459d5f6e97701ca6a350ddee6b7f2 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 19 Apr 2016 17:59:27 +0200 +Subject: [PATCH 31/70] conncheck: improve triggered check of in-progress pairs + +This patch update the way triggered checks of in-progress pairs are +handled, according to ICE spec, section 7.2.1.4. Previously the same +connection check was retransmitted with an updated timeout. This causes +problems when a controlling role switch occurs in this time frame. +This is the reason why a new connection check must be generated +reflecting the updated role. We introduce a new flag "recheck_on_timeout" +in the pair indicating that the pair must be rechecked at the next timer +expiration. + +Differential Revision: https://phabricator.freedesktop.org/D875 +--- + agent/conncheck.c | 88 +++++++++++++++++++++++++++++++++++++++++++++---------- + agent/conncheck.h | 2 +- + 2 files changed, 74 insertions(+), 16 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 2d2224d..3a489fe 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -558,6 +558,37 @@ candidate_check_pair_fail (NiceStream *stream, NiceAgent *agent, CandidateCheckP + } + + /* ++ * Function that resubmits a new connection check, after a previous ++ * check in in-progress state got cancelled due to an incoming stun ++ * request matching this same pair ++ * ++ * @return will return TRUE if the pair is scheduled for recheck ++ */ ++static gboolean ++priv_conn_recheck_on_timeout (NiceAgent *agent, CandidateCheckPair *p) ++{ ++ if (p->recheck_on_timeout) { ++ g_assert (p->state == NICE_CHECK_IN_PROGRESS); ++ /* this cancelled pair may have the flag 'mark nominated ++ * on response arrival' set, we want to keep it, because ++ * this is needed to nominate this pair in aggressive ++ * nomination, when the agent is in controlled mode. ++ * ++ * this cancelled pair may also have the flag 'use candidate ++ * on next check' set, that we want to preserve too. ++ */ ++ nice_debug ("Agent %p : pair %p was cancelled, " ++ "triggering a new connection check", agent, p); ++ p->recheck_on_timeout = FALSE; ++ p->state = NICE_CHECK_WAITING; ++ nice_debug ("Agent %p : pair %p state WAITING", agent, p); ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ return TRUE; ++ } ++ return FALSE; ++} ++ ++/* + * Helper function for connectivity check timer callback that + * runs through the stream specific part of the state machine. + * +@@ -584,8 +615,17 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + switch (stun_timer_refresh (&p->timer)) { + case STUN_USAGE_TIMER_RETURN_TIMEOUT: + { +- /* case: error, abort processing */ + gchar tmpbuf1[INET6_ADDRSTRLEN], tmpbuf2[INET6_ADDRSTRLEN]; ++ ++ /* case: conncheck cancelled due to in-progress incoming ++ * check, requeing the pair, ICE spec, sect 7.2.1.4 ++ * "Triggered Checks", "If the state of that pair is ++ * In-Progress..." ++ */ ++ if (priv_conn_recheck_on_timeout (agent, p)) ++ break; ++ ++ /* case: error, abort processing */ + nice_address_to_string (&p->local->addr, tmpbuf1); + nice_address_to_string (&p->remote->addr, tmpbuf2); + nice_debug ("Agent %p : Retransmissions failed, giving up on connectivity check %p", agent, p); +@@ -600,8 +640,17 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + } + case STUN_USAGE_TIMER_RETURN_RETRANSMIT: + { +- /* case: not ready, so schedule a new timeout */ + unsigned int timeout = stun_timer_remainder (&p->timer); ++ ++ /* case: conncheck cancelled due to in-progress incoming ++ * check, requeing the pair, ICE spec, sect 7.2.1.4 ++ * "Triggered Checks", "If the state of that pair is ++ * In-Progress..." ++ */ ++ if (priv_conn_recheck_on_timeout (agent, p)) ++ break; ++ ++ /* case: not ready, so schedule a new timeout */ + nice_debug ("Agent %p :STUN transaction retransmitted on pair %p " + "(timeout %dms, delay=%dms, retrans=%d).", + agent, p, timeout, p->timer.delay, p->timer.retransmissions); +@@ -642,6 +691,12 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + */ + pair = priv_conn_check_find_next_waiting (stream->conncheck_list); + if (pair) { ++ /* remove the pair from the triggered check list if needed. This ++ * may happen with the cancelled pair, that's just been added ++ * in state waiting to the triggered check list above in the ++ * same function. ++ */ ++ priv_remove_pair_from_triggered_check_queue (agent, pair); + priv_print_conn_check_lists (agent, G_STRFUNC, + ", got a pair in Waiting state"); + priv_conn_check_initiate (agent, pair); +@@ -794,6 +849,7 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + p->valid) { + nice_debug ("Agent %p : restarting check %p with " + "USE-CANDIDATE attrib (regular nomination)", agent, p); ++ p->recheck_on_timeout = FALSE; + p->use_candidate_on_next_check = TRUE; + priv_add_pair_to_triggered_check_queue (agent, p); + break; /* move to the next component */ +@@ -816,6 +872,7 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + p->state == NICE_CHECK_DISCOVERED)) { + nice_debug ("Agent %p : restarting check %p as the nominated pair.", agent, p); + p->nominated = TRUE; ++ p->recheck_on_timeout = FALSE; + priv_update_selected_pair (agent, component, p); + priv_add_pair_to_triggered_check_queue (agent, p); + break; /* move to the next component */ +@@ -2697,19 +2754,20 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + p->state == NICE_CHECK_FROZEN) + priv_add_pair_to_triggered_check_queue (agent, p); + else if (p->state == NICE_CHECK_IN_PROGRESS) { +- /* XXX: according to ICE 7.2.1.4 "Triggered Checks" (ID-19), +- * we should cancel the existing one, instead we reset our timer, so +- * we'll resend the exiting transactions faster if needed...? :P +- */ +- nice_debug ("Agent %p : check already in progress, " +- "restarting the timer again?: %s ..", agent, +- p->timer_restarted ? "no" : "yes"); +- if (!nice_socket_is_reliable (p->sockptr) && !p->timer_restarted) { +- stun_timer_start (&p->timer, +- priv_compute_conncheck_timer (agent, stream), +- agent->stun_max_retransmissions); +- p->timer_restarted = TRUE; +- } ++ /* note: according to ICE SPEC sect 7.2.1.4 "Triggered Checks" ++ * we cancel the in-progress transaction, and after the ++ * retransmission timeout, we create a new connectivity check ++ * for that pair. The controlling role of this new check may ++ * be different from the role of this cancelled check. ++ */ ++ if (!nice_socket_is_reliable (p->sockptr)) { ++ nice_debug ("Agent %p : check already in progress, " ++ "cancelling this check..", agent); ++ /* this flag will determine the action at the retransmission ++ * timeout of the stun timer ++ */ ++ p->recheck_on_timeout = TRUE; ++ } + } + else if (p->state == NICE_CHECK_SUCCEEDED || + p->state == NICE_CHECK_DISCOVERED) { +diff --git a/agent/conncheck.h b/agent/conncheck.h +index 0f988de..785a6cd 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -85,10 +85,10 @@ struct _CandidateCheckPair + gchar foundation[NICE_CANDIDATE_PAIR_MAX_FOUNDATION]; + NiceCheckState state; + gboolean nominated; +- gboolean timer_restarted; + gboolean valid; + gboolean use_candidate_on_next_check; + gboolean mark_nominated_on_response_arrival; ++ gboolean recheck_on_timeout; + guint64 priority; + guint32 prflx_priority; + GTimeVal next_tick; /* next tick timestamp */ +-- +2.13.6 + + +From 72ee528f7fdf82fb1a44958c18a0d4d5055d2d1a Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 12 Apr 2016 13:25:16 +0200 +Subject: [PATCH 32/70] conncheck: link succeeded and discovered pairs + +When the agent has the role of the stun server, is in controlled mode, +and receives a pair with the "use-candidate" attribute set, it must find +a matching succeded or discovered pair in its conncheck list. This is +described in ICE spec 7.2.1.5, "Updating the Nominated Flag", item #1. +When a matching pair is in succeeded state, the agent must nominate the +valid pair (a discovered pair) constructed from section 7.1.3.2.2, +that's been created from this succeeded one. To make this lookup, we +introduce a new "discovered_pair" member of the CandidateCheckPair +struct, that links the succeeded pair, and its discovered pair +if any. + +Differential Revision: https://phabricator.freedesktop.org/D878 +--- + agent/conncheck.c | 7 +++++++ + agent/conncheck.h | 1 + + 2 files changed, 8 insertions(+) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 3a489fe..99cb6d2 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1928,6 +1928,12 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + * candidate, generating a "discovered" pair that can be + * nominated. + */ ++ if (pair->state == NICE_CHECK_SUCCEEDED && ++ pair->discovered_pair != NULL) { ++ pair = pair->discovered_pair; ++ g_assert (pair->state == NICE_CHECK_DISCOVERED); ++ } ++ + if (pair->valid) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated", + agent, pair, pair->foundation); +@@ -2936,6 +2942,7 @@ static CandidateCheckPair *priv_add_peer_reflexive_pair (NiceAgent *agent, guint + pair->remote = parent_pair->remote; + pair->sockptr = local_cand->sockptr; + pair->state = NICE_CHECK_DISCOVERED; ++ parent_pair->discovered_pair = pair; + nice_debug ("Agent %p : new pair %p state DISCOVERED", agent, pair); + { + gchar tmpbuf1[INET6_ADDRSTRLEN]; +diff --git a/agent/conncheck.h b/agent/conncheck.h +index 785a6cd..dd47ebe 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -89,6 +89,7 @@ struct _CandidateCheckPair + gboolean use_candidate_on_next_check; + gboolean mark_nominated_on_response_arrival; + gboolean recheck_on_timeout; ++ struct _CandidateCheckPair *discovered_pair; + guint64 priority; + guint32 prflx_priority; + GTimeVal next_tick; /* next tick timestamp */ +-- +2.13.6 + + +From 9103a5f2e184211fc160d1d3070ce4d043c71ff0 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 19 Apr 2016 18:16:26 +0200 +Subject: [PATCH 33/70] conncheck: use the right pair when retriggering a check + +This patch completes the previous patch by adding a link back from the +discovered pair, to the parent pair that generated this check. This link +is needed by the ICE spec, to comply with section 8.1.1.1, "Regular +nomination", where the check to be retriggered is the initial check that +caused the discovery of the valid pair. When the valid pair is a +peer-reflexive pair, the retriggered check must target the succeeded +pair, and not the valid discovered pair. + +Differential Revision: https://phabricator.freedesktop.org/D879 +--- + agent/conncheck.c | 21 ++++++++++++++++++--- + agent/conncheck.h | 1 + + 2 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 99cb6d2..79685df 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -847,6 +847,16 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + !p->nominated && + !p->use_candidate_on_next_check && + p->valid) { ++ /* According a ICE spec, sect 8.1.1.1. "Regular ++ * Nomination", we enqueue the check that produced this ++ * valid pair. When this pair has been discovered, we want ++ * to test its parent pair instead. ++ */ ++ if (p->succeeded_pair != NULL) { ++ g_assert (p->state == NICE_CHECK_DISCOVERED); ++ p = p->succeeded_pair; ++ } ++ g_assert (p->state == NICE_CHECK_SUCCEEDED); + nice_debug ("Agent %p : restarting check %p with " + "USE-CANDIDATE attrib (regular nomination)", agent, p); + p->recheck_on_timeout = FALSE; +@@ -2754,6 +2764,11 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + * tcp-active we don't want to retrigger a check on a pair that + * was FAILED when a peer-reflexive pair was created */ + ++ if (p->succeeded_pair != NULL) { ++ g_assert (p->state == NICE_CHECK_DISCOVERED); ++ p = p->succeeded_pair; ++ } ++ + nice_debug ("Agent %p : Found a matching pair %p for triggered check.", agent, p); + + if (p->state == NICE_CHECK_WAITING || +@@ -2775,8 +2790,7 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + p->recheck_on_timeout = TRUE; + } + } +- else if (p->state == NICE_CHECK_SUCCEEDED || +- p->state == NICE_CHECK_DISCOVERED) { ++ else if (p->state == NICE_CHECK_SUCCEEDED) { + nice_debug ("Agent %p : Skipping triggered check, already completed..", agent); + /* note: this is a bit unsure corner-case -- let's do the + same state update as for processing responses to our own checks */ +@@ -2943,6 +2957,7 @@ static CandidateCheckPair *priv_add_peer_reflexive_pair (NiceAgent *agent, guint + pair->sockptr = local_cand->sockptr; + pair->state = NICE_CHECK_DISCOVERED; + parent_pair->discovered_pair = pair; ++ pair->succeeded_pair = parent_pair; + nice_debug ("Agent %p : new pair %p state DISCOVERED", agent, pair); + { + gchar tmpbuf1[INET6_ADDRSTRLEN]; +@@ -4163,7 +4178,7 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + + pair = priv_conn_check_add_for_candidate_pair_matched (agent, + stream->id, component, local_candidate, remote_candidate, +- NICE_CHECK_DISCOVERED); ++ NICE_CHECK_SUCCEEDED); + if (pair) { + pair->valid = TRUE; + } +diff --git a/agent/conncheck.h b/agent/conncheck.h +index dd47ebe..c07fb22 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -90,6 +90,7 @@ struct _CandidateCheckPair + gboolean mark_nominated_on_response_arrival; + gboolean recheck_on_timeout; + struct _CandidateCheckPair *discovered_pair; ++ struct _CandidateCheckPair *succeeded_pair; + guint64 priority; + guint32 prflx_priority; + GTimeVal next_tick; /* next tick timestamp */ +-- +2.13.6 + + +From 3916b8bcbf7e78e1dcb6b77882075c2c22719b4e Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 12 Apr 2016 13:30:04 +0200 +Subject: [PATCH 34/70] conncheck: fix a nomination corner case + +This patch add two supplementary cases, not covered by the ICE spec, +sect 7.2.1.5 "Updating the Nominated Flag" when a controlled agent +receives a STUN request with the USE-CANDIDATE flag, for a pair that is +in the waiting state. We consider that this case is similar to the +in-progress state, and should be handled in the same way. We also accept +when the pair is in frozen state. This latter case happens in the +new-dribble test, when an agent replays incoming early connchecks. + +Differential Revision: https://phabricator.freedesktop.org/D880 +--- + agent/conncheck.c | 35 +++++++++++++++++++++++++++++++++-- + 1 file changed, 33 insertions(+), 2 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 79685df..4f4af40 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1963,6 +1963,29 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + "will be nominated on response receipt.", + agent, pair, pair->foundation); + } ++ /* note: this case is not covered by the ICE spec, 7.2.1.5, ++ * "Updating the Nominated Flag", but a pair in waiting state ++ * deserves the same treatment than a pair in-progress. ++ */ ++ if (pair->state == NICE_CHECK_WAITING) { ++ pair->mark_nominated_on_response_arrival = TRUE; ++ nice_debug ("Agent %p : pair %p (%s) is waiting, " ++ "will be nominated on response receipt.", ++ agent, pair, pair->foundation); ++ } ++ /* note: this case is not covered by the ICE spec, 7.2.1.5, ++ * "Updating the Nominated Flag" either, but a pair in frozen ++ * state, and in the triggered check list should also be ++ * considered like a pair in-progress. This case happens with ++ * the new-dribble test, when an agent replays incoming early ++ * connchecks. ++ */ ++ if (pair->state == NICE_CHECK_FROZEN) { ++ pair->mark_nominated_on_response_arrival = TRUE; ++ nice_debug ("Agent %p : pair %p (%s) is frozen, " ++ "will be nominated on response receipt.", ++ agent, pair, pair->foundation); ++ } + } else if (pair->local == localcand && pair->remote == remotecand) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated", agent, pair, pair->foundation); + pair->nominated = TRUE; +@@ -2703,17 +2726,25 @@ static guint priv_prune_pending_checks (NiceStream *stream, guint component_id) + "is %" G_GUINT64_FORMAT, highest_nominated_priority); + + /* step: cancel all FROZEN and WAITING pairs for the component */ ++ /* note: this case is not covered by the ICE spec, 8.1.2 ++ * "Updating States", but a pair in waiting state which will be ++ * nominated on response receipt should be treated the same way ++ * that an in-progress pair. ++ */ + for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *p = i->data; + if (p->component_id == component_id) { + if (p->state == NICE_CHECK_FROZEN || +- p->state == NICE_CHECK_WAITING) { ++ (p->state == NICE_CHECK_WAITING && ++ !p->mark_nominated_on_response_arrival)) { + p->state = NICE_CHECK_CANCELLED; + nice_debug ("Agent XXX : pair %p state CANCELED", p); + } + + /* note: a SHOULD level req. in ICE 8.1.2. "Updating States" (ID-19) */ +- if (p->state == NICE_CHECK_IN_PROGRESS) { ++ if (p->state == NICE_CHECK_IN_PROGRESS || ++ (p->state == NICE_CHECK_WAITING && ++ p->mark_nominated_on_response_arrival)) { + if (highest_nominated_priority != 0 && + p->priority < highest_nominated_priority) { + p->stun_message.buffer = NULL; +-- +2.13.6 + + +From afd8d41bb34afb3864e838ef79026ae4ef15c0d4 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 12 Apr 2016 13:32:49 +0200 +Subject: [PATCH 35/70] conncheck: new pairs never have the nominated flag + preset + +This patch disables the possibility to set the nominated flag of a +candidate pair at creation time. This possibility was used when a new +pair is created from a new peer reflexive remote candidate, when the +agent is in controlled mode, and an stun request with USE-CANDIDATE is +received. In this case, since previous commit "conncheck: fix a +nomination corner case", we set the nominated flag when the stun +response of this new pair will arrive, and not before. Consequently, +this flag is no longer required when the pair is created. + +Differential Revision: https://phabricator.freedesktop.org/D881 +--- + agent/conncheck.c | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 4f4af40..3cd0424 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -65,7 +65,7 @@ + static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStream *stream); + static void priv_update_check_list_state_for_ready (NiceAgent *agent, NiceStream *stream, NiceComponent *component); + static guint priv_prune_pending_checks (NiceStream *stream, guint component_id); +-static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceSocket *local_socket, NiceCandidate *remote_cand, gboolean use_candidate); ++static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceSocket *local_socket, NiceCandidate *remote_cand); + static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceCandidate *localcand, NiceCandidate *remotecand); + static size_t priv_create_username (NiceAgent *agent, NiceStream *stream, + guint component_id, NiceCandidate *remote, NiceCandidate *local, +@@ -1573,7 +1573,8 @@ static void priv_preprocess_conn_check_pending_data (NiceAgent *agent, NiceStrea + nice_debug ("Agent %p : Updating check %p with stored early-icheck %p, %p/%u/%u (agent/stream/component).", agent, pair, icheck, agent, stream->id, component->id); + if (icheck->use_candidate) + priv_mark_pair_nominated (agent, stream, component, pair->local, pair->remote); +- priv_schedule_triggered_check (agent, stream, component, icheck->local_socket, pair->remote, icheck->use_candidate); ++ priv_schedule_triggered_check (agent, stream, component, ++ icheck->local_socket, pair->remote); + } + } + } +@@ -1716,7 +1717,8 @@ void conn_check_remote_credentials_set(NiceAgent *agent, NiceStream *stream) + + if (icheck->use_candidate) + priv_mark_pair_nominated (agent, stream, component, local_candidate, candidate); +- priv_schedule_triggered_check (agent, stream, component, icheck->local_socket, candidate, icheck->use_candidate); ++ priv_schedule_triggered_check (agent, stream, component, ++ icheck->local_socket, candidate); + } + } + } +@@ -2043,7 +2045,7 @@ ensure_unique_priority (NiceComponent *component, guint32 priority) + */ + static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + guint stream_id, NiceComponent *component, NiceCandidate *local, +- NiceCandidate *remote, NiceCheckState initial_state, gboolean use_candidate) ++ NiceCandidate *remote, NiceCheckState initial_state) + { + NiceStream *stream; + CandidateCheckPair *pair; +@@ -2081,7 +2083,6 @@ static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + tmpbuf1, nice_address_get_port (&pair->local->addr), + tmpbuf2, nice_address_get_port (&pair->remote->addr)); + } +- pair->nominated = use_candidate; + pair->prflx_priority = ensure_unique_priority (component, + peer_reflexive_candidate_priority (agent, local)); + +@@ -2127,7 +2128,7 @@ static CandidateCheckPair *priv_conn_check_add_for_candidate_pair_matched ( + agent, local->foundation, remote->foundation, + stream_id, component->id); + pair = priv_add_new_check_pair (agent, stream_id, component, local, remote, +- initial_state, FALSE); ++ initial_state); + if (component->state == NICE_COMPONENT_STATE_CONNECTED || + component->state == NICE_COMPONENT_STATE_READY) { + agent_signal_component_state_change (agent, +@@ -2774,9 +2775,8 @@ static guint priv_prune_pending_checks (NiceStream *stream, guint component_id) + * @param component the check is related to + * @param local_socket socket from which the inbound check was received + * @param remote_cand remote candidate from which the inbound check was sent +- * @param use_candidate whether the original check had USE-CANDIDATE attribute set + */ +-static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceSocket *local_socket, NiceCandidate *remote_cand, gboolean use_candidate) ++static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceSocket *local_socket, NiceCandidate *remote_cand) + { + GSList *i; + NiceCandidate *local = NULL; +@@ -2872,7 +2872,8 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + + if (i) { + nice_debug ("Agent %p : Adding a triggered check to conn.check list (local=%p).", agent, local); +- priv_add_new_check_pair (agent, stream->id, component, local, remote_cand, NICE_CHECK_WAITING, use_candidate); ++ priv_add_new_check_pair (agent, stream->id, component, ++ local, remote_cand, NICE_CHECK_WAITING); + return TRUE; + } + else { +@@ -2926,7 +2927,7 @@ static void priv_reply_to_conn_check (NiceAgent *agent, NiceStream *stream, + + if (rcand) { + /* note: upon successful check, make the reserve check immediately */ +- priv_schedule_triggered_check (agent, stream, component, sockptr, rcand, use_candidate); ++ priv_schedule_triggered_check (agent, stream, component, sockptr, rcand); + + if (use_candidate) + priv_mark_pair_nominated (agent, stream, component, lcand, rcand); +-- +2.13.6 + + +From 25b3eeec70b4e8e3b2154a18cdc8c5604f572012 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 12 Apr 2016 12:56:28 +0200 +Subject: [PATCH 36/70] conncheck: update the pair state in triggered check + list + +With this patch, we update the state of the pair to waiting when +it is put in the triggered check queue. We also take care to call +priv_schedule_triggered_check() before priv_mark_pair_nominated() +so a pair to be rechecked and put on the triggered check queue +will have a unique state to be tested in the following call to +priv_mark_pair_nominated() when evaluating its nomination attributes. + +Differential Revision: https://phabricator.freedesktop.org/D883 +--- + agent/conncheck.c | 33 +++++++++------------------------ + 1 file changed, 9 insertions(+), 24 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 3cd0424..9950970 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -183,6 +183,8 @@ priv_add_pair_to_triggered_check_queue (NiceAgent *agent, CandidateCheckPair *pa + { + g_assert (pair); + ++ pair->state = NICE_CHECK_WAITING; ++ nice_debug ("Agent %p : pair %p state WAITING", agent, pair); + if (agent->triggered_check_queue == NULL || + g_slist_find (agent->triggered_check_queue, pair) == NULL) + agent->triggered_check_queue = g_slist_append (agent->triggered_check_queue, pair); +@@ -580,8 +582,6 @@ priv_conn_recheck_on_timeout (NiceAgent *agent, CandidateCheckPair *p) + nice_debug ("Agent %p : pair %p was cancelled, " + "triggering a new connection check", agent, p); + p->recheck_on_timeout = FALSE; +- p->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, p); + priv_add_pair_to_triggered_check_queue (agent, p); + return TRUE; + } +@@ -1571,10 +1571,10 @@ static void priv_preprocess_conn_check_pending_data (NiceAgent *agent, NiceStrea + if (nice_address_equal (&icheck->from, &pair->remote->addr) && + icheck->local_socket == pair->sockptr) { + nice_debug ("Agent %p : Updating check %p with stored early-icheck %p, %p/%u/%u (agent/stream/component).", agent, pair, icheck, agent, stream->id, component->id); +- if (icheck->use_candidate) +- priv_mark_pair_nominated (agent, stream, component, pair->local, pair->remote); + priv_schedule_triggered_check (agent, stream, component, + icheck->local_socket, pair->remote); ++ if (icheck->use_candidate) ++ priv_mark_pair_nominated (agent, stream, component, pair->local, pair->remote); + } + } + } +@@ -1715,10 +1715,10 @@ void conn_check_remote_credentials_set(NiceAgent *agent, NiceStream *stream) + else + conn_check_add_for_candidate (agent, stream->id, component, candidate); + +- if (icheck->use_candidate) +- priv_mark_pair_nominated (agent, stream, component, local_candidate, candidate); + priv_schedule_triggered_check (agent, stream, component, + icheck->local_socket, candidate); ++ if (icheck->use_candidate) ++ priv_mark_pair_nominated (agent, stream, component, local_candidate, candidate); + } + } + } +@@ -1967,7 +1967,9 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + } + /* note: this case is not covered by the ICE spec, 7.2.1.5, + * "Updating the Nominated Flag", but a pair in waiting state +- * deserves the same treatment than a pair in-progress. ++ * deserves the same treatment than a pair in-progress. A pair ++ * can be in waiting state as the result of being enqueued in ++ * the triggered check list for example. + */ + if (pair->state == NICE_CHECK_WAITING) { + pair->mark_nominated_on_response_arrival = TRUE; +@@ -1975,19 +1977,6 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + "will be nominated on response receipt.", + agent, pair, pair->foundation); + } +- /* note: this case is not covered by the ICE spec, 7.2.1.5, +- * "Updating the Nominated Flag" either, but a pair in frozen +- * state, and in the triggered check list should also be +- * considered like a pair in-progress. This case happens with +- * the new-dribble test, when an agent replays incoming early +- * connchecks. +- */ +- if (pair->state == NICE_CHECK_FROZEN) { +- pair->mark_nominated_on_response_arrival = TRUE; +- nice_debug ("Agent %p : pair %p (%s) is frozen, " +- "will be nominated on response receipt.", +- agent, pair, pair->foundation); +- } + } else if (pair->local == localcand && pair->remote == remotecand) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated", agent, pair, pair->foundation); + pair->nominated = TRUE; +@@ -2926,9 +2915,7 @@ static void priv_reply_to_conn_check (NiceAgent *agent, NiceStream *stream, + } + + if (rcand) { +- /* note: upon successful check, make the reserve check immediately */ + priv_schedule_triggered_check (agent, stream, component, sockptr, rcand); +- + if (use_candidate) + priv_mark_pair_nominated (agent, stream, component, lcand, rcand); + } +@@ -3345,9 +3332,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + + p->stun_message.buffer = NULL; + p->stun_message.buffer_len = 0; +- p->state = NICE_CHECK_WAITING; + priv_add_pair_to_triggered_check_queue (agent, p); +- nice_debug ("Agent %p : pair %p state WAITING", agent, p); + } + trans_found = TRUE; + } else { +-- +2.13.6 + + +From 11d4e37a030eb144a355dc26c705ef5aa5a975a7 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Fri, 1 Apr 2016 17:31:44 +0200 +Subject: [PATCH 37/70] conncheck: remove a useless pair recheck + +This exception to the ICE spec is no longer needed: when a pair is in +the succeeded state, there is no needed to recheck it again upon +reception of an incoming stun request on it. + +Differential Revision: https://phabricator.freedesktop.org/D884 +--- + agent/conncheck.c | 17 ----------------- + 1 file changed, 17 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 9950970..95e2556 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -2820,23 +2820,6 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + * that causes the ready -> connected transition. + */ + priv_update_check_list_state_for_ready (agent, stream, component); +- +- /* note: this new check is required by the new-dribble test, +- * when early icheck on the peer controlled agent causes an +- * incoming stun request to an already succeeded (and +- * nominated) pair on the controlling agent. If the +- * controlling agent doesn't retrigger a check with +- * USE-CANDIDATE=1, the peer agent has no way to nominate it. +- * +- * This behavior differs from ICE spec 7.2.1.4 +- */ +- if ((agent->compatibility == NICE_COMPATIBILITY_RFC5245 || +- agent->compatibility == NICE_COMPATIBILITY_WLM2009 || +- agent->compatibility == NICE_COMPATIBILITY_OC2007R2) && +- agent->controlling_mode) { +- priv_add_pair_to_triggered_check_queue (agent, p); +- conn_check_schedule_next(agent); +- } + } else if (p->state == NICE_CHECK_FAILED) { + /* 7.2.1.4 Triggered Checks + * If the state of the pair is Failed, it is changed to Waiting +-- +2.13.6 + + +From 8fa648a15a6700d08165fe97a09f5c068abae1e6 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 11 Apr 2016 13:13:51 +0200 +Subject: [PATCH 38/70] conncheck: dont cancel a pair for triggered check + +This patch adds another supplementary "corner" case, not covered by the +ICE spec, sect 8.1.2, "Updating States". A pair in waiting state and in +the triggered check list should be considered like an in-progress pair, +and cancelled only if its priority is lower than the priority of the +nominated pair. This is required in some aggressive nomination +situations for both peers to select the same pair, having the highest +priority. + +Differential Revision: https://phabricator.freedesktop.org/D933 +--- + agent/conncheck.c | 48 ++++++++++++++++++++++++++++++++---------------- + 1 file changed, 32 insertions(+), 16 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 95e2556..79f678a 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -64,7 +64,7 @@ + + static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStream *stream); + static void priv_update_check_list_state_for_ready (NiceAgent *agent, NiceStream *stream, NiceComponent *component); +-static guint priv_prune_pending_checks (NiceStream *stream, guint component_id); ++static guint priv_prune_pending_checks (NiceAgent *agent, NiceStream *stream, guint component_id); + static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceSocket *local_socket, NiceCandidate *remote_cand); + static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, NiceComponent *component, NiceCandidate *localcand, NiceCandidate *remotecand); + static size_t priv_create_username (NiceAgent *agent, NiceStream *stream, +@@ -176,6 +176,16 @@ priv_print_conn_check_lists (NiceAgent *agent, const gchar *where, const gchar * + } + } + ++/* Verify if the pair is in the triggered checks list ++ */ ++ ++static gboolean ++priv_is_pair_in_triggered_check_queue (NiceAgent *agent, CandidateCheckPair *pair) ++{ ++ g_assert (pair); ++ return (g_slist_find (agent->triggered_check_queue, pair) != NULL); ++} ++ + /* Add the pair to the triggered checks list, if not already present + */ + static void +@@ -1897,7 +1907,7 @@ static void priv_update_check_list_state_for_ready (NiceAgent *agent, NiceStream + /* Only go to READY if no checks are left in progress. If there are + * any that are kept, then this function will be called again when the + * conncheck tick timer finishes them all */ +- if (priv_prune_pending_checks (stream, component->id) == 0) { ++ if (priv_prune_pending_checks (agent, stream, component->id) == 0) { + /* Continue through the states to give client code a nice + * logical progression. See http://phabricator.freedesktop.org/D218 for + * discussion. */ +@@ -2693,14 +2703,14 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + * + * @see priv_update_check_list_state_failed_components() + */ +-static guint priv_prune_pending_checks (NiceStream *stream, guint component_id) ++static guint priv_prune_pending_checks (NiceAgent *agent, NiceStream *stream, guint component_id) + { + GSList *i; + guint64 highest_nominated_priority = 0; + guint in_progress = 0; + +- nice_debug ("Agent XXX: Finding highest priority for component %d", +- component_id); ++ nice_debug ("Agent %p: Finding highest priority for component %d", ++ agent, component_id); + + for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *p = i->data; +@@ -2712,41 +2722,47 @@ static guint priv_prune_pending_checks (NiceStream *stream, guint component_id) + } + } + +- nice_debug ("Agent XXX: Pruning pending checks. Highest nominated priority " +- "is %" G_GUINT64_FORMAT, highest_nominated_priority); ++ nice_debug ("Agent %p: Pruning pending checks. Highest nominated priority " ++ "is %" G_GUINT64_FORMAT, agent, highest_nominated_priority); + + /* step: cancel all FROZEN and WAITING pairs for the component */ + /* note: this case is not covered by the ICE spec, 8.1.2 + * "Updating States", but a pair in waiting state which will be + * nominated on response receipt should be treated the same way +- * that an in-progress pair. ++ * that an in-progress pair. A pair in waiting state and in ++ * the triggered check list should also be treated like an in-progress ++ * pair. + */ + for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *p = i->data; ++ + if (p->component_id == component_id) { ++ gboolean like_in_progress = ++ p->mark_nominated_on_response_arrival || ++ priv_is_pair_in_triggered_check_queue (agent, p); ++ + if (p->state == NICE_CHECK_FROZEN || +- (p->state == NICE_CHECK_WAITING && +- !p->mark_nominated_on_response_arrival)) { ++ (p->state == NICE_CHECK_WAITING && !like_in_progress)) { + p->state = NICE_CHECK_CANCELLED; +- nice_debug ("Agent XXX : pair %p state CANCELED", p); ++ nice_debug ("Agent %p : pair %p state CANCELED", agent, p); + } + + /* note: a SHOULD level req. in ICE 8.1.2. "Updating States" (ID-19) */ + if (p->state == NICE_CHECK_IN_PROGRESS || +- (p->state == NICE_CHECK_WAITING && +- p->mark_nominated_on_response_arrival)) { ++ (p->state == NICE_CHECK_WAITING && like_in_progress)) { + if (highest_nominated_priority != 0 && + p->priority < highest_nominated_priority) { + p->stun_message.buffer = NULL; + p->stun_message.buffer_len = 0; + p->state = NICE_CHECK_CANCELLED; +- nice_debug ("Agent XXX : pair %p state CANCELED", p); ++ nice_debug ("Agent %p : pair %p state CANCELED", agent, p); + } else { + /* We must keep the higher priority pairs running because if a udp + * packet was lost, we might end up using a bad candidate */ +- nice_debug ("Agent XXX : pair %p kept IN_PROGRESS because priority %" ++ nice_debug ("Agent %p : pair %p kept IN_PROGRESS because priority %" + G_GUINT64_FORMAT " is higher than currently nominated pair %" +- G_GUINT64_FORMAT, p, p->priority, highest_nominated_priority); ++ G_GUINT64_FORMAT, agent, ++ p, p->priority, highest_nominated_priority); + in_progress++; + } + } +-- +2.13.6 + + +From 6a512b6eca9603ce8bf3ed0814fd314684c66ea7 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 14 Jun 2016 21:04:49 +0200 +Subject: [PATCH 39/70] conncheck: try to change earlier to state ready + +We check if we can move from state connected to ready just +after a pair expired its retransmission count. This pair +will be marked failed, and will no longer be in-progress. +The number of in-progress dropping down to zero is one +of the conditions needed to make the transition to ready, +per component (and not globally as it's the case in other +locations where this check function is called). + +Differential Revision: https://phabricator.freedesktop.org/D1117 +--- + agent/conncheck.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 79f678a..d31b77f 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -626,6 +626,7 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + case STUN_USAGE_TIMER_RETURN_TIMEOUT: + { + gchar tmpbuf1[INET6_ADDRSTRLEN], tmpbuf2[INET6_ADDRSTRLEN]; ++ NiceComponent *component; + + /* case: conncheck cancelled due to in-progress incoming + * check, requeing the pair, ICE spec, sect 7.2.1.4 +@@ -646,6 +647,16 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + priv_print_conn_check_lists (agent, G_STRFUNC, + ", retransmission failed"); + ++ /* perform a check if a transition state from connected to ++ * ready can be performed. This may happen here, when the last ++ * in-progress pair has expired its retransmission count ++ * in priv_conn_check_tick_stream(), which is a condition to ++ * make the transition connected to ready. ++ */ ++ if (agent_find_component (agent, p->stream_id, p->component_id, ++ NULL, &component)) ++ priv_update_check_list_state_for_ready (agent, stream, ++ component); + break; + } + case STUN_USAGE_TIMER_RETURN_RETRANSMIT: +-- +2.13.6 + + +From 59fe48517c0b7db77b99183d31fdd84b55adb5d4 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 14 Jun 2016 21:12:16 +0200 +Subject: [PATCH 40/70] conncheck: fix a state transition case + +When a new stun request hits a valid pair, of a failed component, we may +have a transition from state failed to connected. In this situation, we +do a logical progression failed -> connecting -> connected, like we do +in function priv_update_check_list_state_for_ready() + +Similarily, when a new stun request hits a failed pair, of a failed +component, triggering a new conncheck for this pair may also cause the +component state to move back from failed to connecting state. + +Differential Revision: https://phabricator.freedesktop.org/D1118 +--- + agent/conncheck.c | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index d31b77f..e1a5cf1 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1973,12 +1973,14 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + pair->nominated = TRUE; + priv_update_selected_pair (agent, component, pair); + /* Do not step down to CONNECTED if we're already at state READY*/ +- if (component->state != NICE_COMPONENT_STATE_READY) { ++ if (component->state == NICE_COMPONENT_STATE_FAILED) ++ agent_signal_component_state_change (agent, ++ stream->id, component->id, NICE_COMPONENT_STATE_CONNECTING); ++ if (component->state == NICE_COMPONENT_STATE_CONNECTING) + /* step: notify the client of a new component state (must be done + * before the possible check list state update step */ + agent_signal_component_state_change (agent, + stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); +- } + priv_update_check_list_state_for_ready (agent, stream, component); + } else if (pair->state == NICE_CHECK_IN_PROGRESS) { + pair->mark_nominated_on_response_arrival = TRUE; +@@ -2004,13 +2006,14 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + if (pair->valid) { + priv_update_selected_pair (agent, component, pair); + /* Do not step down to CONNECTED if we're already at state READY*/ +- if (component->state != NICE_COMPONENT_STATE_READY) { ++ if (component->state == NICE_COMPONENT_STATE_FAILED) ++ agent_signal_component_state_change (agent, ++ stream->id, component->id, NICE_COMPONENT_STATE_CONNECTING); ++ if (component->state == NICE_COMPONENT_STATE_CONNECTING) + /* step: notify the client of a new component state (must be done + * before the possible check list state update step */ + agent_signal_component_state_change (agent, + stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); +- } +- + } + priv_update_check_list_state_for_ready (agent, stream, component); + } +@@ -2854,6 +2857,14 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + pair (representing a new STUN Binding request transaction), by + enqueueing the pair in the triggered check queue. */ + priv_add_pair_to_triggered_check_queue (agent, p); ++ /* If the component for this pair is in failed state, move it ++ * back to connecting, and reinitiate the timers ++ */ ++ if (component->state == NICE_COMPONENT_STATE_FAILED) { ++ agent_signal_component_state_change (agent, stream->id, ++ component->id, NICE_COMPONENT_STATE_CONNECTING); ++ conn_check_schedule_next (agent); ++ } + } + + /* note: the spec says the we SHOULD retransmit in-progress +-- +2.13.6 + + +From f19d209decac432a1597d84c3d5809d2208f7457 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 14 Jun 2016 21:20:49 +0200 +Subject: [PATCH 41/70] conncheck: do not recheck a just succeeded pair + +We cancel the potential in-progress transaction cancellation, caused by +sect 7.2.1.4 "Triggered Checks", when we receive a valid reply before +transmission timeout, or just after timeout, when the pair is +temporarily put on the triggered check list on the way to be +rechecked. This situation is not covered by the RFC 5245. + +Differential Revision: https://phabricator.freedesktop.org/D1119 +--- + agent/conncheck.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index e1a5cf1..4b785b5 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3117,6 +3117,16 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + if (new_pair == p) + p->valid = TRUE; + p->state = NICE_CHECK_SUCCEEDED; ++ /* note: we cancel the potential in-progress transaction ++ * cancellation, caused by sect 7.2.1.4 "Triggered Checks", if ++ * we receive a valid reply before transmission timeout... ++ */ ++ p->recheck_on_timeout = FALSE; ++ /* ... or just after the transmission timeout, while the pair is ++ * temporarily put on the triggered check list on the way to be ++ * be rechecked: we remove it from the list too. ++ */ ++ priv_remove_pair_from_triggered_check_queue (agent, p); + nice_debug ("Agent %p : conncheck %p SUCCEEDED.", agent, p); + nice_component_add_valid_candidate (component, remote_candidate); + } +@@ -3151,6 +3161,8 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + * Succeeded, RFC 5245, 7.1.3.2.3, "Updating Pair States" + */ + p->state = NICE_CHECK_SUCCEEDED; ++ p->recheck_on_timeout = FALSE; ++ priv_remove_pair_from_triggered_check_queue (agent, p); + nice_debug ("Agent %p : conncheck %p SUCCEEDED, %p DISCOVERED.", + agent, p, new_pair); + } +-- +2.13.6 + + +From d516fca1b0e0a6606afec797bdc0690104e779a9 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 14 Jun 2016 21:32:26 +0200 +Subject: [PATCH 42/70] conncheck: adjust recheck on timeout strategy + +The pair recheck on timeout can easily cause repetitive rechecks in +a ping-pong effect, if both peers with the same behaviour try to +check the same pair almost simultaneously, and if the network rtt +is greater than the initial timer rto. The reply to the initial +stun request may arrive after the in-progress conncheck +cancellation (described in RFC 5245, sect 7.2.1.4). Cancellation +creates a new stun request, and forgets the initial one. +The conncheck timer is restarted with the same initial value, +so the same situation happens again later. + +We choose to avoid resetting the timer in such situation. After enough +retransmissions, the timeout delay, that doubles after each timeout, +becomes longer than the rtt, and the stun reply can be handled. + +Differential Revision: https://phabricator.freedesktop.org/D1115 +--- + agent/conncheck.c | 30 ++++++++++++++++++++++++++---- + 1 file changed, 26 insertions(+), 4 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 4b785b5..88d2534 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -591,7 +591,6 @@ priv_conn_recheck_on_timeout (NiceAgent *agent, CandidateCheckPair *p) + */ + nice_debug ("Agent %p : pair %p was cancelled, " + "triggering a new connection check", agent, p); +- p->recheck_on_timeout = FALSE; + priv_add_pair_to_triggered_check_queue (agent, p); + return TRUE; + } +@@ -2650,9 +2649,32 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + if (nice_socket_is_reliable(pair->sockptr)) { + stun_timer_start_reliable(&pair->timer, agent->stun_reliable_timeout); + } else { +- stun_timer_start (&pair->timer, +- priv_compute_conncheck_timer (agent, stream), +- agent->stun_max_retransmissions); ++ StunTimer *timer = &pair->timer; ++ ++ if (pair->recheck_on_timeout) ++ /* The pair recheck on timeout can easily cause repetitive rechecks in ++ * a ping-pong effect, if both peers with the same behaviour try to ++ * check the same pair almost simultaneously, and if the network rtt ++ * is greater than the initial timer rto. The reply to the initial ++ * stun request may arrive after the in-progress conncheck ++ * cancellation (described in RFC 5245, sect 7.2.1.4). Cancellation ++ * creates a new stun request, and forgets the initial one. ++ * The conncheck timer is restarted with the same initial value, ++ * so the same situation happens again later. ++ * ++ * We choose to avoid resetting the timer in such situation. ++ * After enough retransmissions, the timeout delay becomes ++ * longer than the rtt, and the stun reply can be handled. ++ */ ++ nice_debug("Agent %p : reusing timer of pair %p: %d/%d %d/%dms", ++ agent, pair, ++ timer->retransmissions, timer->max_retransmissions, ++ timer->delay - stun_timer_remainder (timer), timer->delay); ++ else ++ stun_timer_start (timer, ++ priv_compute_conncheck_timer (agent, stream), ++ agent->stun_max_retransmissions); ++ pair->recheck_on_timeout = FALSE; + } + + /* TCP-ACTIVE candidate must create a new socket before sending +-- +2.13.6 + + +From 95f8805eb7b77755337e28daf1f134587d42b35f Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Thu, 16 Jun 2016 17:32:39 +0200 +Subject: [PATCH 43/70] conncheck: remove cancelled pair state + +Pairs with the state NICE_CHECK_CANCELLED are the pairs targeted for +removal after the nomination of a pair with an higher priority, +described in Section 8.1.2 "Updating States", item 2 of RFC 5245. They +include also pairs that overflow the conncheck list size, but this is a +somewhat more marginal situation. So we are mainly interested in the +first use case of this state. + +This state mixes two different situations, that deserve a distinct +handling : on one side, there are waiting or frozen pairs that must be +removed, this is an immediate action that doesn't need a dedicated state +for that. And on the other side, there are in-progress pairs that +should no longer be retransmitted, because another pair with a higher +priority has already been nominated. + +This patch removes the cancelled state, and adds a flag +retransmit_on_timeout to deal with this last situation. Note that this +case should not generate a triggered check, as per described in section +7.2.1.4, when the state of the pair is In-Progress or Failed, since this +pair of lower priority has no hope to replace the nominated one. + +Differential Revision: https://phabricator.freedesktop.org/D1114 +--- + agent/conncheck.c | 142 +++++++++++++++++++++++++++++------------------------- + agent/conncheck.h | 3 +- + 2 files changed, 77 insertions(+), 68 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 88d2534..b0e2222 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -100,8 +100,6 @@ priv_state_to_gchar (NiceCheckState state) + return 'F'; + case NICE_CHECK_FROZEN: + return 'Z'; +- case NICE_CHECK_CANCELLED: +- return 'C'; + case NICE_CHECK_DISCOVERED: + return 'D'; + default: +@@ -627,6 +625,7 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + gchar tmpbuf1[INET6_ADDRSTRLEN], tmpbuf2[INET6_ADDRSTRLEN]; + NiceComponent *component; + ++timer_timeout: + /* case: conncheck cancelled due to in-progress incoming + * check, requeing the pair, ICE spec, sect 7.2.1.4 + * "Triggered Checks", "If the state of that pair is +@@ -662,6 +661,13 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + { + unsigned int timeout = stun_timer_remainder (&p->timer); + ++ /* case: retransmission stopped, due to the nomination of ++ * a pair with a higher priority than this in-progress pair, ++ * ICE spec, sect 8.1.2 "Updating States", item 2.2 ++ */ ++ if (!p->retransmit_on_timeout) ++ goto timer_timeout; ++ + /* case: conncheck cancelled due to in-progress incoming + * check, requeing the pair, ICE spec, sect 7.2.1.4 + * "Triggered Checks", "If the state of that pair is +@@ -1600,26 +1606,6 @@ static void priv_preprocess_conn_check_pending_data (NiceAgent *agent, NiceStrea + } + + +-static GSList *prune_cancelled_conn_check (GSList *conncheck_list) +-{ +- GSList *item = conncheck_list; +- +- while (item) { +- CandidateCheckPair *pair = item->data; +- GSList *next = item->next; +- +- if (pair->state == NICE_CHECK_CANCELLED) { +- conn_check_free_item (pair); +- conncheck_list = g_slist_delete_link (conncheck_list, item); +- } +- +- item = next; +- } +- +- return conncheck_list; +-} +- +- + /* + * Handle any processing steps for connectivity checks after + * remote credentials have been set. This function handles +@@ -1754,9 +1740,6 @@ void conn_check_remote_credentials_set(NiceAgent *agent, NiceStream *stream) + (GDestroyNotify) incoming_check_free); + component->incoming_checks = NULL; + } +- +- stream->conncheck_list = +- prune_cancelled_conn_check (stream->conncheck_list); + } + + /* +@@ -1764,7 +1747,7 @@ void conn_check_remote_credentials_set(NiceAgent *agent, NiceStream *stream) + * in ICE spec section 5.7.3 (ID-19). See also + * conn_check_add_for_candidate(). + */ +-static void priv_limit_conn_check_list_size (GSList *conncheck_list, guint upper_limit) ++static GSList *priv_limit_conn_check_list_size (GSList *conncheck_list, guint upper_limit) + { + guint valid = 0; + guint cancelled = 0; +@@ -1772,22 +1755,22 @@ static void priv_limit_conn_check_list_size (GSList *conncheck_list, guint upper + + while (item) { + CandidateCheckPair *pair = item->data; ++ GSList *next = item->next; + +- if (pair->state != NICE_CHECK_CANCELLED) { +- valid++; +- if (valid > upper_limit) { +- pair->state = NICE_CHECK_CANCELLED; ++ valid++; ++ if (valid > upper_limit) { ++ conn_check_free_item (pair); ++ conncheck_list = g_slist_delete_link (conncheck_list, item); + cancelled++; +- } + } +- +- item = item->next; ++ item = next; + } + + if (cancelled > 0) + nice_debug ("Agent : Pruned %d candidates. Conncheck list has %d elements" + " left. Maximum connchecks allowed : %d", cancelled, valid, + upper_limit); ++ return conncheck_list; + } + + /* +@@ -2097,6 +2080,7 @@ static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + } + pair->prflx_priority = ensure_unique_priority (component, + peer_reflexive_candidate_priority (agent, local)); ++ pair->retransmit_on_timeout = TRUE; + + stream->conncheck_list = g_slist_insert_sorted (stream->conncheck_list, pair, + (GCompareFunc)conn_check_compare); +@@ -2106,7 +2090,8 @@ static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + /* implement the hard upper limit for number of + checks (see sect 5.7.3 ICE ID-19): */ + if (agent->compatibility == NICE_COMPATIBILITY_RFC5245) { +- priv_limit_conn_check_list_size (stream->conncheck_list, agent->max_conn_checks); ++ stream->conncheck_list = priv_limit_conn_check_list_size ( ++ stream->conncheck_list, agent->max_conn_checks); + } + + return pair; +@@ -2769,8 +2754,10 @@ static guint priv_prune_pending_checks (NiceAgent *agent, NiceStream *stream, gu + * the triggered check list should also be treated like an in-progress + * pair. + */ +- for (i = stream->conncheck_list; i; i = i->next) { ++ i = stream->conncheck_list; ++ while (i) { + CandidateCheckPair *p = i->data; ++ GSList *next = i->next; + + if (p->component_id == component_id) { + gboolean like_in_progress = +@@ -2779,19 +2766,20 @@ static guint priv_prune_pending_checks (NiceAgent *agent, NiceStream *stream, gu + + if (p->state == NICE_CHECK_FROZEN || + (p->state == NICE_CHECK_WAITING && !like_in_progress)) { +- p->state = NICE_CHECK_CANCELLED; +- nice_debug ("Agent %p : pair %p state CANCELED", agent, p); ++ nice_debug ("Agent %p : pair %p removed.", agent, p); ++ conn_check_free_item (p); ++ stream->conncheck_list = g_slist_delete_link(stream->conncheck_list, i); + } + + /* note: a SHOULD level req. in ICE 8.1.2. "Updating States" (ID-19) */ +- if (p->state == NICE_CHECK_IN_PROGRESS || ++ else if (p->state == NICE_CHECK_IN_PROGRESS || + (p->state == NICE_CHECK_WAITING && like_in_progress)) { + if (highest_nominated_priority != 0 && + p->priority < highest_nominated_priority) { +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; +- p->state = NICE_CHECK_CANCELLED; +- nice_debug ("Agent %p : pair %p state CANCELED", agent, p); ++ p->retransmit_on_timeout = FALSE; ++ p->recheck_on_timeout = FALSE; ++ nice_debug ("Agent %p : pair %p will not be retransmitted.", ++ agent, p); + } else { + /* We must keep the higher priority pairs running because if a udp + * packet was lost, we might end up using a bad candidate */ +@@ -2803,6 +2791,7 @@ static guint priv_prune_pending_checks (NiceAgent *agent, NiceStream *stream, gu + } + } + } ++ i = next; + } + + return in_progress; +@@ -2841,29 +2830,42 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + p = p->succeeded_pair; + } + +- nice_debug ("Agent %p : Found a matching pair %p for triggered check.", agent, p); ++ nice_debug ("Agent %p : Found a matching pair %p (%s) (state=%c) ...", ++ agent, p, p->foundation, priv_state_to_gchar (p->state)); + + if (p->state == NICE_CHECK_WAITING || +- p->state == NICE_CHECK_FROZEN) ++ p->state == NICE_CHECK_FROZEN) { ++ nice_debug ("Agent %p : pair %p added for a triggered check.", ++ agent, p); + priv_add_pair_to_triggered_check_queue (agent, p); ++ } + else if (p->state == NICE_CHECK_IN_PROGRESS) { + /* note: according to ICE SPEC sect 7.2.1.4 "Triggered Checks" + * we cancel the in-progress transaction, and after the + * retransmission timeout, we create a new connectivity check + * for that pair. The controlling role of this new check may + * be different from the role of this cancelled check. ++ * ++ * note: the flag retransmit_on_timeout unset means that ++ * another pair, with a higher priority is already nominated, ++ * so there's no reason to recheck this pair, since it can in ++ * no way replace the nominated one. + */ + if (!nice_socket_is_reliable (p->sockptr)) { +- nice_debug ("Agent %p : check already in progress, " +- "cancelling this check..", agent); +- /* this flag will determine the action at the retransmission +- * timeout of the stun timer +- */ +- p->recheck_on_timeout = TRUE; ++ if (p->retransmit_on_timeout) { ++ nice_debug ("Agent %p : pair %p will be rechecked " ++ "on stun timer timeout.", agent, p); ++ /* this flag will determine the action at the retransmission ++ * timeout of the stun timer ++ */ ++ p->recheck_on_timeout = TRUE; ++ } else ++ nice_debug ("Agent %p : pair %p won't be retransmitted.", ++ agent, p); + } + } + else if (p->state == NICE_CHECK_SUCCEEDED) { +- nice_debug ("Agent %p : Skipping triggered check, already completed..", agent); ++ nice_debug ("Agent %p : nothing to do for pair %p.", agent, p); + /* note: this is a bit unsure corner-case -- let's do the + same state update as for processing responses to our own checks */ + /* note: this update is required by the dribble test, to +@@ -2875,18 +2877,30 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + } else if (p->state == NICE_CHECK_FAILED) { + /* 7.2.1.4 Triggered Checks + * If the state of the pair is Failed, it is changed to Waiting +- and the agent MUST create a new connectivity check for that +- pair (representing a new STUN Binding request transaction), by +- enqueueing the pair in the triggered check queue. */ +- priv_add_pair_to_triggered_check_queue (agent, p); +- /* If the component for this pair is in failed state, move it +- * back to connecting, and reinitiate the timers ++ * and the agent MUST create a new connectivity check for that ++ * pair (representing a new STUN Binding request transaction), by ++ * enqueueing the pair in the triggered check queue. ++ * ++ * note: the flag retransmit_on_timeout unset means that ++ * another pair, with a higher priority is already nominated, ++ * we apply the same strategy than with an in-progress pair ++ * above. + */ +- if (component->state == NICE_COMPONENT_STATE_FAILED) { +- agent_signal_component_state_change (agent, stream->id, +- component->id, NICE_COMPONENT_STATE_CONNECTING); +- conn_check_schedule_next (agent); +- } ++ if (p->retransmit_on_timeout) { ++ nice_debug ("Agent %p : pair %p added for a triggered check.", ++ agent, p); ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ /* If the component for this pair is in failed state, move it ++ * back to connecting, and reinitiate the timers ++ */ ++ if (component->state == NICE_COMPONENT_STATE_FAILED) { ++ agent_signal_component_state_change (agent, stream->id, ++ component->id, NICE_COMPONENT_STATE_CONNECTING); ++ conn_check_schedule_next (agent); ++ } ++ } else ++ nice_debug ("Agent %p : pair %p won't be retransmitted.", ++ agent, p); + } + + /* note: the spec says the we SHOULD retransmit in-progress +@@ -3401,10 +3415,6 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + } + } + +- +- stream->conncheck_list = +- prune_cancelled_conn_check (stream->conncheck_list); +- + return trans_found; + } + +diff --git a/agent/conncheck.h b/agent/conncheck.h +index c07fb22..909d469 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -56,7 +56,6 @@ + * @NICE_CHECK_SUCCEEDED: Connection successfully checked. + * @NICE_CHECK_FAILED: No connectivity; retransmissions ceased. + * @NICE_CHECK_FROZEN: Waiting to be scheduled to %NICE_CHECK_WAITING. +- * @NICE_CHECK_CANCELLED: Check cancelled. + * @NICE_CHECK_DISCOVERED: A valid candidate pair not on the check list. + * + * States for checking a candidate pair. +@@ -68,7 +67,6 @@ typedef enum + NICE_CHECK_SUCCEEDED, + NICE_CHECK_FAILED, + NICE_CHECK_FROZEN, +- NICE_CHECK_CANCELLED, + NICE_CHECK_DISCOVERED, + } NiceCheckState; + +@@ -89,6 +87,7 @@ struct _CandidateCheckPair + gboolean use_candidate_on_next_check; + gboolean mark_nominated_on_response_arrival; + gboolean recheck_on_timeout; ++ gboolean retransmit_on_timeout; + struct _CandidateCheckPair *discovered_pair; + struct _CandidateCheckPair *succeeded_pair; + guint64 priority; +-- +2.13.6 + + +From 07366a5bca7e4818b8df29d9c7c220da8f752547 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 21 Jun 2016 21:47:42 +0200 +Subject: [PATCH 44/70] conncheck: fix the component failed transition + +This patch fixes the transition of a component from connecting to +failed, that previously occured due to the propagation of the +keep_timer_going variable, and to the final call to function +priv_update_check_list_failed_components(), after the global agent +timer was stopped. + +Previously, the code almost never entered to failed state, because the +timer was going one, as long as the number of nominated pair was not +enough, and as long as there were valid pairs not yet nominated. Even +if all pair timers were over. + +The definition of the Failed state of a conncheck list is somewhat +contradictory in the spec, depending on weather you read : + + * sect 5.7.4. "Computing States", + "Failed: In this state, the ICE checks have not completed successfully + for this media stream." + + or + + * sect 7.1.3.3. "Check List and Timer State Updates", + "If all of the pairs in the check list are now either in the Failed or + Succeeded state: If there is not a pair in the valid list for each + component of the media stream, the state of the check list is set to + Failed." + +Our understanding of the ICE spec is that, the proper way to enter failed +state instead in when all connchecks have no longer in-progress pairs. +All pairs are either in state succeeded, discovered, or failed. No timer +is still running, and we have no hope that the conncheck list changes +again, except if an unexpected STUN packet arrives later. All pairs in +frozen state is a special case, that is handled separately (sect +7.1.3.3). + +A special grace delay is added before declaring a component in state +Failed. This delay is not part of the RFC, and it is aimed to limit the +cases when a conncheck list is reactivated just after it's been declared +failed, causing a user visible transition from connecting to failed, and +back from failed to connecting again. This is also required by the test +suite, that counts exactly the number of time each state is entered, and +doesn't expect these transcient failed states to happen (frequent due to +the nature of the testsuite, less frequent in real life). + +Differential Revision: https://phabricator.freedesktop.org/D1111 +--- + agent/agent-priv.h | 14 +++++++++++ + agent/conncheck.c | 71 +++++++++++++++++++++++++++++++++++++++++++----------- + 2 files changed, 71 insertions(+), 14 deletions(-) + +diff --git a/agent/agent-priv.h b/agent/agent-priv.h +index 3384180..714ecff 100644 +--- a/agent/agent-priv.h ++++ b/agent/agent-priv.h +@@ -122,6 +122,18 @@ nice_input_message_iter_compare (const NiceInputMessageIter *a, + ((obj)->compatibility == NICE_COMPATIBILITY_RFC5245 || \ + (obj)->compatibility == NICE_COMPATIBILITY_OC2007R2) + ++/* A grace period before declaring a component as failed, in msecs. This ++ * delay is added to reduce the chance to see the agent receiving new ++ * stun activity just after the conncheck list has been declared failed, ++ * reactiviting conncheck activity, and causing a (valid) state ++ * transitions like that: connecting -> failed -> connecting -> ++ * connected -> ready. ++ * Such transitions are not buggy per-se, but may break the ++ * test-suite, that counts precisely the number of time each state ++ * has been set, and doesnt expect these transcient failed states. ++ */ ++#define NICE_AGENT_MAX_TIMER_GRACE_PERIOD 1000 ++ + struct _NiceAgent + { + GObject parent; /* gobject pointer */ +@@ -176,6 +188,8 @@ struct _NiceAgent + guint16 rfc4571_expecting_length; + gboolean use_ice_udp; + gboolean use_ice_tcp; ++ ++ guint conncheck_timer_grace_period; /* ongoing delay before timer stop */ + /* XXX: add pointer to internal data struct for ABI-safe extensions */ + }; + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index b0e2222..63db471 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -709,7 +709,7 @@ timer_timeout: + } + } + } +- } ++ } + + /* step: perform an ordinary check, ICE spec, 5.8 "Scheduling Checks" + * note: This code is executed when the triggered checks list is +@@ -795,11 +795,8 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + if (s_inprogress) + keep_timer_going = TRUE; + +- /* note: if some components have established connectivity, +- * but yet no nominated pair, keep timer going */ + if (s_nominated < stream->n_components && + s_waiting_for_nomination) { +- keep_timer_going = TRUE; + if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { + if (agent->nomination_mode == NICE_NOMINATION_MODE_REGULAR && + agent->controlling_mode) { +@@ -888,6 +885,7 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + p->recheck_on_timeout = FALSE; + p->use_candidate_on_next_check = TRUE; + priv_add_pair_to_triggered_check_queue (agent, p); ++ keep_timer_going = TRUE; + break; /* move to the next component */ + } + } +@@ -911,6 +909,7 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + p->recheck_on_timeout = FALSE; + priv_update_selected_pair (agent, component, p); + priv_add_pair_to_triggered_check_queue (agent, p); ++ keep_timer_going = TRUE; + break; /* move to the next component */ + } + } +@@ -937,6 +936,7 @@ conn_check_stop (NiceAgent *agent) + g_source_destroy (agent->conncheck_timer_source); + g_source_unref (agent->conncheck_timer_source); + agent->conncheck_timer_source = NULL; ++ agent->conncheck_timer_grace_period = 0; + } + + +@@ -1005,9 +1005,39 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + keep_timer_going = TRUE; + } + ++ /* step: if no work left and a conncheck list of a stream is still ++ * frozen, set the pairs to waiting, according to ICE SPEC, sect ++ * 7.1.3.3. "Check List and Timer State Updates" ++ */ ++ if (!keep_timer_going) { ++ for (i = agent->streams; i ; i = i->next) { ++ NiceStream *stream = i->data; ++ if (priv_is_checklist_frozen (stream)) { ++ nice_debug ("Agent %p : stream %d conncheck list is still " ++ "frozen, while other lists are completed. Unfreeze it.", ++ agent, stream->id); ++ keep_timer_going = priv_conn_check_unfreeze_next (agent, stream); ++ } ++ } ++ } ++ ++ /* note: we provide a grace period before declaring a component as ++ * failed. Components marked connected, and then ready follow another ++ * code path, and are not concerned by this grace period. ++ */ ++ if (!keep_timer_going && agent->conncheck_timer_grace_period == 0) ++ nice_debug ("Agent %p : waiting %d msecs before checking " ++ "for failed components.", agent, NICE_AGENT_MAX_TIMER_GRACE_PERIOD); ++ ++ if (keep_timer_going) ++ agent->conncheck_timer_grace_period = 0; ++ else ++ agent->conncheck_timer_grace_period += agent->timer_ta; ++ + /* step: stop timer if no work left */ +- if (keep_timer_going != TRUE) { +- nice_debug ("Agent %p : %s: stopping conncheck timer", agent, G_STRFUNC); ++ if (!keep_timer_going && ++ agent->conncheck_timer_grace_period >= NICE_AGENT_MAX_TIMER_GRACE_PERIOD) { ++ nice_debug ("Agent %p : checking for failed components now.", agent); + for (i = agent->streams; i; i = i->next) { + NiceStream *stream = i->data; + priv_update_check_list_failed_components (agent, stream); +@@ -1017,6 +1047,7 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + } + } + ++ nice_debug ("Agent %p : %s: stopping conncheck timer", agent, G_STRFUNC); + priv_print_conn_check_lists (agent, G_STRFUNC, + ", conncheck timer stopped"); + +@@ -1027,9 +1058,10 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + + /* XXX: what to signal, is all processing now really done? */ + nice_debug ("Agent %p : changing conncheck state to COMPLETED.", agent); ++ return FALSE; + } + +- return keep_timer_going; ++ return TRUE; + } + + static gboolean priv_conn_check_tick (gpointer pointer) +@@ -1810,15 +1842,18 @@ static gboolean priv_update_selected_pair (NiceAgent *agent, NiceComponent *comp + * Updates the check list state. + * + * Implements parts of the algorithm described in +- * ICE sect 8.1.2. "Updating States" (ID-19): if for any ++ * ICE sect 8.1.2. "Updating States" (RFC 5245): if for any + * component, all checks have been completed and have +- * failed, mark that component's state to NICE_CHECK_FAILED. ++ * failed to produce a nominated pair, mark that component's ++ * state to NICE_CHECK_FAILED. + * + * Sends a component state changesignal via 'agent'. + */ + static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStream *stream) + { + GSList *i; ++ gboolean completed; ++ guint nominated; + /* note: emitting a signal might cause the client + * to remove the stream, thus the component count + * must be fetched before entering the loop*/ +@@ -1842,6 +1877,8 @@ static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStre + if (!agent_find_component (agent, stream->id, c+1, NULL, &comp)) + continue; + ++ nominated = 0; ++ completed = TRUE; + for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *p = i->data; + +@@ -1849,16 +1886,22 @@ static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStre + g_assert (p->stream_id == stream->id); + + if (p->component_id == (c + 1)) { +- if (p->state != NICE_CHECK_FAILED) +- break; ++ if (p->nominated) ++ ++nominated; ++ if (p->state != NICE_CHECK_FAILED && ++ p->state != NICE_CHECK_SUCCEEDED && ++ p->state != NICE_CHECK_DISCOVERED) ++ completed = FALSE; + } + } + +- /* note: all checks have failed ++ /* note: all pairs are either failed or succeeded, and the component ++ * has not produced a nominated pair. + * Set the component to FAILED only if it actually had remote candidates + * that failed.. */ +- if (i == NULL && comp != NULL && comp->remote_candidates != NULL) +- agent_signal_component_state_change (agent, ++ if (completed && nominated == 0 && ++ comp != NULL && comp->remote_candidates != NULL) ++ agent_signal_component_state_change (agent, + stream->id, + (c + 1), /* component-id */ + NICE_COMPONENT_STATE_FAILED); +-- +2.13.6 + + +From 195db6b344fc4f9fadc39419dfeec2fc14b23fac Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Fri, 15 Jul 2016 23:31:42 +0200 +Subject: [PATCH 45/70] agent: add new pairs only for gathering streams + +At the end of the local candidate gathering process, we only create new +pairs for streams that are in gathering state. + +Other stream that may be in ready state for example, due to a +previously succeeded conncheck process, may have accumulated some +couples (local,remote) candidates that have not resulted in the creation +a new pair during this previous conncheck process, and we don't want +these new pairs to be added now, because it would generate unneeded +transition changes for a stream unconcerned by this gathering. + +Differential Revision: https://phabricator.freedesktop.org/D1755 +--- + agent/agent.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/agent/agent.c b/agent/agent.c +index 577a7e0..e3705ed 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -2032,6 +2032,17 @@ void agent_gathering_done (NiceAgent *agent) + + for (i = agent->streams; i; i = i->next) { + NiceStream *stream = i->data; ++ ++ /* We ignore streams not in gathering state, typically already in ++ * ready state. Such streams may have couples (local,remote) ++ * candidates that have not resulted in the creation a new pair ++ * during a previous conncheck session, and we don't want these new ++ * pairs to be added now, because it would generate unneeded ++ * transition changes for a stream unconcerned by this gathering. ++ */ ++ if (!stream->gathering) ++ continue; ++ + for (j = stream->components; j; j = j->next) { + NiceComponent *component = j->data; + +-- +2.13.6 + + +From b4b8d6628c8c5d4f10af0101f846db4938a3f6c4 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 28 May 2017 22:20:36 +0200 +Subject: [PATCH 46/70] stun: fix gcc7 implicit fallthrough warning + +Differential Revision: https://phabricator.freedesktop.org/D1754 +--- + stun/stunmessage.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/stun/stunmessage.c b/stun/stunmessage.c +index e8184c4..4cc3392 100644 +--- a/stun/stunmessage.c ++++ b/stun/stunmessage.c +@@ -120,6 +120,7 @@ stun_message_find (const StunMessage *msg, StunAttribute type, + /* Only fingerprint may come after M-I */ + if (type == STUN_ATTRIBUTE_FINGERPRINT) + break; ++ return NULL; + + case STUN_ATTRIBUTE_FINGERPRINT: + /* Nothing may come after FPR */ +-- +2.13.6 + + +From c7a5a92b66f9b83baf2aa446966bdfb2cf39ecd1 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 18 Jun 2017 10:12:58 +0200 +Subject: [PATCH 47/70] agent: remove spurious newlines + +Differential Revision: https://phabricator.freedesktop.org/D1756 +--- + agent/agent.c | 2 +- + agent/component.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index e3705ed..27e6193 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3905,7 +3905,7 @@ agent_recv_message_unlocked ( + + nice_address_to_string (message->from, str); + nice_debug_verbose ("Agent %p : %d:%d DROPPING packet from unknown source" +- " %s:%d sock-type: %d\n", agent, stream->id, component->id, str, ++ " %s:%d sock-type: %d", agent, stream->id, component->id, str, + nice_address_get_port (message->from), nicesock->type); + } + +diff --git a/agent/component.c b/agent/component.c +index ab665b6..6e207d3 100644 +--- a/agent/component.c ++++ b/agent/component.c +@@ -1461,7 +1461,7 @@ nice_component_add_valid_candidate (NiceComponent *component, + char str[INET6_ADDRSTRLEN]; + nice_address_to_string (&candidate->addr, str); + nice_debug ("Agent %p : %d:%d Adding valid source" +- " candidate: %s:%d trans: %d\n", component->agent, ++ " candidate: %s:%d trans: %d", component->agent, + candidate->stream_id, candidate->component_id, str, + nice_address_get_port (&candidate->addr), candidate->transport); + } +-- +2.13.6 + + +From e3ddaa285e389baf3f26cfb6964919718a8f6a00 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Wed, 21 Jun 2017 16:55:32 -0400 +Subject: [PATCH 48/70] agent: Adjust the nice_agent_new_full() to use flags + +This makes it easier to read and more extensible. +--- + agent/agent.c | 9 +++++---- + agent/agent.h | 27 ++++++++++++++++++++++----- + tests/test-nomination.c | 8 ++++---- + 3 files changed, 31 insertions(+), 13 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 27e6193..8fd8ead 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -1168,14 +1168,15 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat) + NICEAPI_EXPORT NiceAgent * + nice_agent_new_full (GMainContext *ctx, + NiceCompatibility compat, +- gboolean reliable, +- NiceNominationMode nomination) ++ NiceAgentOption flags) + { + NiceAgent *agent = g_object_new (NICE_TYPE_AGENT, + "compatibility", compat, + "main-context", ctx, +- "reliable", reliable, +- "nomination-mode", nomination, ++ "reliable", (flags & NICE_AGENT_OPTION_RELIABLE) ? TRUE : FALSE, ++ "nomination-mode", (flags & NICE_AGENT_OPTION_REGULAR_NOMINATION) ? ++ NICE_NOMINATION_MODE_REGULAR : NICE_NOMINATION_MODE_AGGRESSIVE, ++ "full-mode", (flags & NICE_AGENT_OPTION_LITE_MODE) ? FALSE : TRUE, + NULL); + + return agent; +diff --git a/agent/agent.h b/agent/agent.h +index 6e233c6..ed6f6e4 100644 +--- a/agent/agent.h ++++ b/agent/agent.h +@@ -399,6 +399,25 @@ typedef enum + } NiceNominationMode; + + /** ++ * NiceAgentOption: ++ * @NICE_AGENT_OPTION_REGULAR_NOMINATION: Enables regular nomination, default ++ * is aggrssive mode (see #NiceNominationMode). ++ * @NICE_AGENT_OPTION_RELIABLE: Enables reliable mode, possibly using PseudoTCP, * see nice_agent_new_reliable(). ++ * @NICE_AGENT_OPTION_LITE_MODE: Enable lite mode ++ * ++ * These are options that can be passed to nice_agent_new_full(). They set ++ * various properties on the agent. Not including them sets the property to ++ * the other value. ++ * ++ * Since: UNRELEASED ++ */ ++typedef enum { ++ NICE_AGENT_OPTION_REGULAR_NOMINATION = 1 << 0, ++ NICE_AGENT_OPTION_RELIABLE = 1 << 1, ++ NICE_AGENT_OPTION_LITE_MODE = 1 << 2, ++} NiceAgentOption; ++ ++/** + * NiceAgentRecvFunc: + * @agent: The #NiceAgent Object + * @stream_id: The id of the stream +@@ -452,13 +471,12 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat); + * nice_agent_new_full: + * @ctx: The Glib Mainloop Context to use for timers + * @compat: The compatibility mode of the agent +- * @reliable: The reliability mode of the agent +- * @nomination: The nomination mode of the agent ++ * @flags: Flags to set the properties + * + * Create a new #NiceAgent with parameters that must be be defined at + * construction time. + * The returned object must be freed with g_object_unref() +- * See also: #NiceNominationMode ++ * See also: #NiceNominationMode and #NiceAgentOption + * + * Since: UNRELEASED + * +@@ -467,8 +485,7 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat); + NiceAgent * + nice_agent_new_full (GMainContext *ctx, + NiceCompatibility compat, +- gboolean reliable, +- NiceNominationMode nomination); ++ NiceAgentOption flags); + + /** + * nice_agent_add_local_address: +diff --git a/tests/test-nomination.c b/tests/test-nomination.c +index b5a5e5f..bf21557 100644 +--- a/tests/test-nomination.c ++++ b/tests/test-nomination.c +@@ -140,13 +140,13 @@ run_test(NiceNominationMode l_nomination_mode, + + lagent = nice_agent_new_full (NULL, + NICE_COMPATIBILITY_RFC5245, +- FALSE, /* reliable */ +- l_nomination_mode); ++ l_nomination_mode == NICE_NOMINATION_MODE_REGULAR ? ++ NICE_AGENT_OPTION_REGULAR_NOMINATION : 0); + + ragent = nice_agent_new_full (NULL, + NICE_COMPATIBILITY_RFC5245, +- FALSE, /* reliable */ +- r_nomination_mode); ++ r_nomination_mode == NICE_NOMINATION_MODE_REGULAR ? ++ NICE_AGENT_OPTION_REGULAR_NOMINATION : 0); + + g_object_set (G_OBJECT (lagent), "ice-tcp", FALSE, NULL); + g_object_set (G_OBJECT (ragent), "ice-tcp", FALSE, NULL); +-- +2.13.6 + + +From dcb0d647174416a292492f8deca86f83a2ef124c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Wed, 21 Jun 2017 17:07:17 -0400 +Subject: [PATCH 49/70] Repleace UNRELEASED with 0.1.15 + +--- + agent/agent.c | 8 ++++---- + agent/agent.h | 6 +++--- + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 8fd8ead..15af9ed 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -448,7 +448,7 @@ nice_agent_class_init (NiceAgentClass *klass) + * the selection of valid pairs to be used upstream. + * See also: #NiceNominationMode + * +- * Since: UNRELEASED ++ * Since: 0.1.15 + */ + g_object_class_install_property (gobject_class, PROP_NOMINATION_MODE, + g_param_spec_enum ( +@@ -744,7 +744,7 @@ nice_agent_class_init (NiceAgentClass *klass) + * to the READY state, and on the time needed to complete the GATHERING + * state. + * +- * Since: UNRELEASED ++ * Since: 0.1.15 + */ + + g_object_class_install_property (gobject_class, PROP_STUN_MAX_RETRANSMISSIONS, +@@ -769,7 +769,7 @@ nice_agent_class_init (NiceAgentClass *klass) + * divided by two instead (RFC 5389 indicates that a customisable + * multiplier 'Rm' to 'RTO' should be used). + * +- * Since: UNRELEASED ++ * Since: 0.1.15 + */ + + g_object_class_install_property (gobject_class, PROP_STUN_INITIAL_TIMEOUT, +@@ -788,7 +788,7 @@ nice_agent_class_init (NiceAgentClass *klass) + * The initial timeout of the STUN binding requests used + * for a reliable timer. + * +- * Since: UNRELEASED ++ * Since: 0.1.15 + */ + + g_object_class_install_property (gobject_class, PROP_STUN_RELIABLE_TIMEOUT, +diff --git a/agent/agent.h b/agent/agent.h +index ed6f6e4..520c4c5 100644 +--- a/agent/agent.h ++++ b/agent/agent.h +@@ -390,7 +390,7 @@ typedef enum + * faster, than the regular mode, potentially causing the nominated + * pair to change until the connection check completes. + * +- * Since: UNRELEASED ++ * Since: 0.1.15 + */ + typedef enum + { +@@ -409,7 +409,7 @@ typedef enum + * various properties on the agent. Not including them sets the property to + * the other value. + * +- * Since: UNRELEASED ++ * Since: 0.1.15 + */ + typedef enum { + NICE_AGENT_OPTION_REGULAR_NOMINATION = 1 << 0, +@@ -478,7 +478,7 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat); + * The returned object must be freed with g_object_unref() + * See also: #NiceNominationMode and #NiceAgentOption + * +- * Since: UNRELEASED ++ * Since: 0.1.15 + * + * Returns: The new agent GObject + */ +-- +2.13.6 + + +From 2c50d73b82f2ec2422a8e0ea393194486c193c64 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Wed, 10 Feb 2016 23:20:39 -0500 +Subject: [PATCH 50/70] agent: Don't crash if recv cancelled without a GError + +--- + agent/agent.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 15af9ed..e48d7f3 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -4279,7 +4279,10 @@ static gboolean + nice_agent_recv_cancelled_cb (GCancellable *cancellable, gpointer user_data) + { + GError **error = user_data; +- return !g_cancellable_set_error_if_cancelled (cancellable, error); ++ ++ if (error && *error) ++ g_cancellable_set_error_if_cancelled (cancellable, error); ++ return G_SOURCE_REMOVE; + } + + static gint +-- +2.13.6 + + +From 63d273cea42def3567701ad9feab91f63cf9345f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Thu, 11 Feb 2016 22:16:48 -0500 +Subject: [PATCH 51/70] component: Use non-GClosure dummy callbacks + +GClosures are not that cheap to setup +--- + agent/component.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +diff --git a/agent/component.c b/agent/component.c +index 6e207d3..6eee90e 100644 +--- a/agent/component.c ++++ b/agent/component.c +@@ -1005,6 +1005,18 @@ nice_component_class_init (NiceComponentClass *klass) + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + } + ++static gboolean ++dummy_callback (gpointer data) ++{ ++ return G_SOURCE_CONTINUE; ++} ++ ++static void ++source_set_dummy_callback (GSource *source) ++{ ++ g_source_set_callback (source, dummy_callback, NULL, NULL); ++} ++ + static void + nice_component_init (NiceComponent *component) + { +@@ -1027,7 +1039,7 @@ nice_component_init (NiceComponent *component) + component->stop_cancellable = g_cancellable_new (); + component->stop_cancellable_source = + g_cancellable_source_new (component->stop_cancellable); +- g_source_set_dummy_callback (component->stop_cancellable_source); ++ source_set_dummy_callback (component->stop_cancellable_source); + g_source_attach (component->stop_cancellable_source, component->own_ctx); + component->ctx = g_main_context_ref (component->own_ctx); + +@@ -1242,7 +1254,7 @@ component_source_prepare (GSource *source, gint *timeout_) + child_socket_source->source = + g_socket_create_source (child_socket_source->socket->fileno, G_IO_IN, + NULL); +- g_source_set_dummy_callback (child_socket_source->source); ++ source_set_dummy_callback (child_socket_source->source); + g_source_add_child_source (source, child_socket_source->source); + g_source_unref (child_socket_source->source); + component_source->socket_sources = +@@ -1387,7 +1399,7 @@ nice_component_input_source_new (NiceAgent *agent, guint stream_id, + GSource *cancellable_source; + + cancellable_source = g_cancellable_source_new (cancellable); +- g_source_set_dummy_callback (cancellable_source); ++ source_set_dummy_callback (cancellable_source); + g_source_add_child_source ((GSource *) component_source, + cancellable_source); + g_source_unref (cancellable_source); +-- +2.13.6 + + +From 9f800d3597767855accccc592c34bc4e945f5bd5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Wed, 21 Jun 2017 20:42:57 -0400 +Subject: [PATCH 52/70] configure: Remove -Wswitch-enum + +Creates useless warnings when other libraries change. + +https://phabricator.freedesktop.org/T7770 +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 6c106ff..16988ad 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -154,7 +154,6 @@ AS_IF([test "$enable_compile_warnings" = "yes" -o \ + ]) + AS_IF([test "$enable_compile_warnings" = "maximum" -o \ + "$enable_compile_warnings" = "error"],[ +- NICE_ADD_FLAG([-Wswitch-enum]) + NICE_ADD_FLAG([-Wswitch-default]) + NICE_ADD_FLAG([-Waggregate-return]) + ]) +-- +2.13.6 + + +From dbaf8f5ccd76089e340883887c7e08e6c04de80a Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 12 Apr 2016 13:22:21 +0200 +Subject: [PATCH 53/70] conncheck: improve role conflict debug + +This patch displays explicitely the controlling or controlled +role of the agent. + +Differential Revision: https://phabricator.freedesktop.org/D874 +--- + agent/conncheck.c | 24 +++++++++++++++++++----- + 1 file changed, 19 insertions(+), 5 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 63db471..8945e0f 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3134,14 +3134,16 @@ static void priv_check_for_role_conflict (NiceAgent *agent, gboolean control) + { + /* role conflict, change mode; wait for a new conn. check */ + if (control != agent->controlling_mode) { +- nice_debug ("Agent %p : Role conflict, changing agent role to %d.", agent, control); ++ nice_debug ("Agent %p : Role conflict, changing agent role to \"%s\".", ++ agent, control ? "controlling" : "controlled"); + agent->controlling_mode = control; + /* the pair priorities depend on the roles, so recalculation + * is needed */ + priv_recalculate_pair_priorities (agent); + } + else +- nice_debug ("Agent %p : Role conflict, agent role already changed to %d.", agent, control); ++ nice_debug ("Agent %p : Role conflict, staying with role \"%s\".", ++ agent, control ? "controlling" : "controlled"); + } + + /* +@@ -3429,13 +3431,25 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + /* case: role conflict error, need to restart with new role */ + nice_debug ("Agent %p : conncheck %p ROLE CONFLICT, restarting", agent, p); + ++ /* note: this res value indicates that the role of the peer ++ * agent has not changed after the tie-breaker comparison, so ++ * this is our role that must change. see ICE sect. 7.1.3.1 ++ * "Failure Cases". Our role might already have changed due to ++ * an earlier incoming request, but if not, change role now. ++ * ++ * Sect. 7.1.3.1 is not clear on this point, but we choose to ++ * put the candidate pair in the triggered check list even ++ * when the agent did not switch its role. The reason for this ++ * interpretation is that the reception of the stun reply, even ++ * an error reply, is a good sign that this pair will be ++ * valid, if we retry the check after the role of both peers ++ * has been fixed. ++ */ ++ + if (p->stun_message.buffer != NULL) { + guint64 tie; + gboolean controlled_mode; + +- /* note: our role might already have changed due to an +- * incoming request, but if not, change role now; +- * follows ICE 7.1.2.1 "Failure Cases" (ID-19) */ + controlled_mode = (stun_message_find64 (&p->stun_message, + STUN_ATTRIBUTE_ICE_CONTROLLED, &tie) == + STUN_MESSAGE_RETURN_SUCCESS); +-- +2.13.6 + + +From 5a42089aeb2dbbb52d820cd1b6efdfcfbe9b055e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Tue, 5 Sep 2017 14:50:29 -0400 +Subject: [PATCH 54/70] agent: Set error if it isn't set + +--- + agent/agent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/agent/agent.c b/agent/agent.c +index e48d7f3..a4dcc0c 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -4280,7 +4280,7 @@ nice_agent_recv_cancelled_cb (GCancellable *cancellable, gpointer user_data) + { + GError **error = user_data; + +- if (error && *error) ++ if (error && !*error) + g_cancellable_set_error_if_cancelled (cancellable, error); + return G_SOURCE_REMOVE; + } +-- +2.13.6 + + +From 25be00271a4c8c684a2d435d29ae0811dbf5e21c Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 26 Jun 2017 20:36:35 +0200 +Subject: [PATCH 55/70] conncheck: reorder some chunks of code + +With this patch we simplify the levels of code indentation. + +Differential Revision: https://phabricator.freedesktop.org/D1758 +--- + agent/conncheck.c | 858 +++++++++++++++++++++++++++--------------------------- + 1 file changed, 422 insertions(+), 436 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 8945e0f..874f7b1 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -608,106 +608,106 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + gboolean keep_timer_going = FALSE; + GSList *i; + CandidateCheckPair *pair; ++ unsigned int timeout; + + /* step: process ongoing STUN transactions */ + for (i = stream->conncheck_list; i ; i = i->next) { + CandidateCheckPair *p = i->data; ++ gchar tmpbuf1[INET6_ADDRSTRLEN], tmpbuf2[INET6_ADDRSTRLEN]; ++ NiceComponent *component; ++ ++ if (!agent_find_component (agent, p->stream_id, p->component_id, ++ NULL, &component)) ++ continue; ++ ++ if (p->state != NICE_CHECK_IN_PROGRESS) ++ continue; + +- if (p->state == NICE_CHECK_IN_PROGRESS) { +- if (p->stun_message.buffer == NULL) { +- nice_debug ("Agent %p : STUN connectivity check was cancelled, marking as done.", agent); +- p->state = NICE_CHECK_FAILED; +- nice_debug ("Agent %p : pair %p state FAILED", agent, p); +- } else if (priv_timer_expired (&p->next_tick, now)) { +- switch (stun_timer_refresh (&p->timer)) { +- case STUN_USAGE_TIMER_RETURN_TIMEOUT: +- { +- gchar tmpbuf1[INET6_ADDRSTRLEN], tmpbuf2[INET6_ADDRSTRLEN]; +- NiceComponent *component; ++ if (p->stun_message.buffer == NULL) { ++ nice_debug ("Agent %p : STUN connectivity check was cancelled, marking as done.", agent); ++ p->state = NICE_CHECK_FAILED; ++ nice_debug ("Agent %p : pair %p state FAILED", agent, p); ++ continue; ++ } + ++ if (!priv_timer_expired (&p->next_tick, now)) ++ continue; ++ ++ switch (stun_timer_refresh (&p->timer)) { ++ case STUN_USAGE_TIMER_RETURN_TIMEOUT: + timer_timeout: +- /* case: conncheck cancelled due to in-progress incoming +- * check, requeing the pair, ICE spec, sect 7.2.1.4 +- * "Triggered Checks", "If the state of that pair is +- * In-Progress..." +- */ +- if (priv_conn_recheck_on_timeout (agent, p)) +- break; ++ /* case: conncheck cancelled due to in-progress incoming ++ * check, requeing the pair, ICE spec, sect 7.2.1.4 ++ * "Triggered Checks", "If the state of that pair is ++ * In-Progress..." ++ */ ++ if (priv_conn_recheck_on_timeout (agent, p)) ++ break; + +- /* case: error, abort processing */ +- nice_address_to_string (&p->local->addr, tmpbuf1); +- nice_address_to_string (&p->remote->addr, tmpbuf2); +- nice_debug ("Agent %p : Retransmissions failed, giving up on connectivity check %p", agent, p); +- nice_debug ("Agent %p : Failed pair is [%s]:%u --> [%s]:%u", agent, +- tmpbuf1, nice_address_get_port (&p->local->addr), +- tmpbuf2, nice_address_get_port (&p->remote->addr)); +- candidate_check_pair_fail (stream, agent, p); +- priv_print_conn_check_lists (agent, G_STRFUNC, +- ", retransmission failed"); +- +- /* perform a check if a transition state from connected to +- * ready can be performed. This may happen here, when the last +- * in-progress pair has expired its retransmission count +- * in priv_conn_check_tick_stream(), which is a condition to +- * make the transition connected to ready. +- */ +- if (agent_find_component (agent, p->stream_id, p->component_id, +- NULL, &component)) +- priv_update_check_list_state_for_ready (agent, stream, +- component); +- break; +- } +- case STUN_USAGE_TIMER_RETURN_RETRANSMIT: +- { +- unsigned int timeout = stun_timer_remainder (&p->timer); ++ /* case: error, abort processing */ ++ nice_address_to_string (&p->local->addr, tmpbuf1); ++ nice_address_to_string (&p->remote->addr, tmpbuf2); ++ nice_debug ("Agent %p : Retransmissions failed, giving up on connectivity check %p", agent, p); ++ nice_debug ("Agent %p : Failed pair is [%s]:%u --> [%s]:%u", agent, ++ tmpbuf1, nice_address_get_port (&p->local->addr), ++ tmpbuf2, nice_address_get_port (&p->remote->addr)); ++ candidate_check_pair_fail (stream, agent, p); ++ priv_print_conn_check_lists (agent, G_STRFUNC, ++ ", retransmission failed"); ++ ++ /* perform a check if a transition state from connected to ++ * ready can be performed. This may happen here, when the last ++ * in-progress pair has expired its retransmission count ++ * in priv_conn_check_tick_stream(), which is a condition to ++ * make the transition connected to ready. ++ */ ++ priv_update_check_list_state_for_ready (agent, stream, component); ++ break; ++ case STUN_USAGE_TIMER_RETURN_RETRANSMIT: ++ timeout = stun_timer_remainder (&p->timer); + +- /* case: retransmission stopped, due to the nomination of +- * a pair with a higher priority than this in-progress pair, +- * ICE spec, sect 8.1.2 "Updating States", item 2.2 +- */ +- if (!p->retransmit_on_timeout) +- goto timer_timeout; ++ /* case: retransmission stopped, due to the nomination of ++ * a pair with a higher priority than this in-progress pair, ++ * ICE spec, sect 8.1.2 "Updating States", item 2.2 ++ */ ++ if (!p->retransmit_on_timeout) ++ goto timer_timeout; + +- /* case: conncheck cancelled due to in-progress incoming +- * check, requeing the pair, ICE spec, sect 7.2.1.4 +- * "Triggered Checks", "If the state of that pair is +- * In-Progress..." +- */ +- if (priv_conn_recheck_on_timeout (agent, p)) +- break; ++ /* case: conncheck cancelled due to in-progress incoming ++ * check, requeing the pair, ICE spec, sect 7.2.1.4 ++ * "Triggered Checks", "If the state of that pair is ++ * In-Progress..." ++ */ ++ if (priv_conn_recheck_on_timeout (agent, p)) ++ break; + +- /* case: not ready, so schedule a new timeout */ +- nice_debug ("Agent %p :STUN transaction retransmitted on pair %p " +- "(timeout %dms, delay=%dms, retrans=%d).", +- agent, p, timeout, p->timer.delay, p->timer.retransmissions); ++ /* case: not ready, so schedule a new timeout */ ++ nice_debug ("Agent %p :STUN transaction retransmitted on pair %p " ++ "(timeout %dms, delay=%dms, retrans=%d).", ++ agent, p, timeout, p->timer.delay, p->timer.retransmissions); + +- agent_socket_send (p->sockptr, &p->remote->addr, +- stun_message_length (&p->stun_message), +- (gchar *)p->stun_buffer); ++ agent_socket_send (p->sockptr, &p->remote->addr, ++ stun_message_length (&p->stun_message), ++ (gchar *)p->stun_buffer); + + +- /* note: convert from milli to microseconds for g_time_val_add() */ +- p->next_tick = *now; +- g_time_val_add (&p->next_tick, timeout * 1000); ++ /* note: convert from milli to microseconds for g_time_val_add() */ ++ p->next_tick = *now; ++ g_time_val_add (&p->next_tick, timeout * 1000); + +- return TRUE; +- } +- case STUN_USAGE_TIMER_RETURN_SUCCESS: +- { +- unsigned int timeout = stun_timer_remainder (&p->timer); ++ return TRUE; ++ case STUN_USAGE_TIMER_RETURN_SUCCESS: ++ timeout = stun_timer_remainder (&p->timer); + +- /* note: convert from milli to microseconds for g_time_val_add() */ +- p->next_tick = *now; +- g_time_val_add (&p->next_tick, timeout * 1000); ++ /* note: convert from milli to microseconds for g_time_val_add() */ ++ p->next_tick = *now; ++ g_time_val_add (&p->next_tick, timeout * 1000); + +- keep_timer_going = TRUE; +- break; +- } +- default: +- /* Nothing to do. */ +- break; +- } +- } ++ keep_timer_going = TRUE; ++ break; ++ default: ++ /* Nothing to do. */ ++ break; + } + } + +@@ -2628,27 +2628,23 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { + switch (agent->nomination_mode) { + case NICE_NOMINATION_MODE_REGULAR: +- { +- /* We are doing regular nomination, so we set the use-candidate +- * attrib, when the controlling agent decided which valid pair to +- * resend with this flag in priv_conn_check_tick_stream() +- */ +- cand_use = pair->use_candidate_on_next_check; +- nice_debug ("Agent %p : %s: set cand_use=%d " +- "(regular nomination).", agent, G_STRFUNC, cand_use); +- break; +- } ++ /* We are doing regular nomination, so we set the use-candidate ++ * attrib, when the controlling agent decided which valid pair to ++ * resend with this flag in priv_conn_check_tick_stream() ++ */ ++ cand_use = pair->use_candidate_on_next_check; ++ nice_debug ("Agent %p : %s: set cand_use=%d " ++ "(regular nomination).", agent, G_STRFUNC, cand_use); ++ break; + case NICE_NOMINATION_MODE_AGGRESSIVE: +- { +- /* We are doing aggressive nomination, we set the use-candidate +- * attrib in every check we send, when we are the controlling +- * agent, RFC 5245, 8.1.1.2 +- */ +- cand_use = controlling; +- nice_debug ("Agent %p : %s: set cand_use=%d " +- "(aggressive nomination).", agent, G_STRFUNC, cand_use); +- break; +- } ++ /* We are doing aggressive nomination, we set the use-candidate ++ * attrib in every check we send, when we are the controlling ++ * agent, RFC 5245, 8.1.1.2 ++ */ ++ cand_use = controlling; ++ nice_debug ("Agent %p : %s: set cand_use=%d " ++ "(aggressive nomination).", agent, G_STRFUNC, cand_use); ++ break; + default: + /* Nothing to do. */ + break; +@@ -2656,107 +2652,105 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + } else if (cand_use) + pair->nominated = controlling; + +- if (uname_len > 0) { +- buffer_len = stun_usage_ice_conncheck_create (&component->stun_agent, +- &pair->stun_message, pair->stun_buffer, sizeof(pair->stun_buffer), +- uname, uname_len, password, password_len, +- cand_use, controlling, pair->prflx_priority, +- agent->tie_breaker, +- pair->local->foundation, +- agent_to_ice_compatibility (agent)); ++ if (uname_len == 0) { ++ nice_debug ("Agent %p: no credentials found, cancelling conncheck", agent); ++ pair->stun_message.buffer = NULL; ++ pair->stun_message.buffer_len = 0; ++ return -1; ++ } + +- nice_debug ("Agent %p: conncheck created %zd - %p", agent, buffer_len, +- pair->stun_message.buffer); ++ buffer_len = stun_usage_ice_conncheck_create (&component->stun_agent, ++ &pair->stun_message, pair->stun_buffer, sizeof(pair->stun_buffer), ++ uname, uname_len, password, password_len, ++ cand_use, controlling, pair->prflx_priority, ++ agent->tie_breaker, ++ pair->local->foundation, ++ agent_to_ice_compatibility (agent)); + +- if (agent->compatibility == NICE_COMPATIBILITY_MSN || +- agent->compatibility == NICE_COMPATIBILITY_OC2007) { +- g_free (password); +- } ++ nice_debug ("Agent %p: conncheck created %zd - %p", agent, buffer_len, ++ pair->stun_message.buffer); + +- if (buffer_len > 0) { +- if (nice_socket_is_reliable(pair->sockptr)) { +- stun_timer_start_reliable(&pair->timer, agent->stun_reliable_timeout); +- } else { +- StunTimer *timer = &pair->timer; +- +- if (pair->recheck_on_timeout) +- /* The pair recheck on timeout can easily cause repetitive rechecks in +- * a ping-pong effect, if both peers with the same behaviour try to +- * check the same pair almost simultaneously, and if the network rtt +- * is greater than the initial timer rto. The reply to the initial +- * stun request may arrive after the in-progress conncheck +- * cancellation (described in RFC 5245, sect 7.2.1.4). Cancellation +- * creates a new stun request, and forgets the initial one. +- * The conncheck timer is restarted with the same initial value, +- * so the same situation happens again later. +- * +- * We choose to avoid resetting the timer in such situation. +- * After enough retransmissions, the timeout delay becomes +- * longer than the rtt, and the stun reply can be handled. +- */ +- nice_debug("Agent %p : reusing timer of pair %p: %d/%d %d/%dms", +- agent, pair, +- timer->retransmissions, timer->max_retransmissions, +- timer->delay - stun_timer_remainder (timer), timer->delay); +- else +- stun_timer_start (timer, +- priv_compute_conncheck_timer (agent, stream), +- agent->stun_max_retransmissions); +- pair->recheck_on_timeout = FALSE; +- } ++ if (agent->compatibility == NICE_COMPATIBILITY_MSN || ++ agent->compatibility == NICE_COMPATIBILITY_OC2007) { ++ g_free (password); ++ } + +- /* TCP-ACTIVE candidate must create a new socket before sending +- * by connecting to the peer. The new socket is stored in the candidate +- * check pair, until we discover a new local peer reflexive */ +- if (pair->sockptr->fileno == NULL && +- pair->sockptr->type != NICE_SOCKET_TYPE_UDP_TURN && +- pair->local->transport == NICE_CANDIDATE_TRANSPORT_TCP_ACTIVE) { +- NiceStream *stream2 = NULL; +- NiceComponent *component2 = NULL; +- NiceSocket *new_socket; +- +- if (agent_find_component (agent, pair->stream_id, pair->component_id, +- &stream2, &component2)) { +- new_socket = nice_tcp_active_socket_connect (pair->sockptr, +- &pair->remote->addr); +- if (new_socket) { +- pair->sockptr = new_socket; +- _priv_set_socket_tos (agent, pair->sockptr, stream2->tos); +- +- if (agent->reliable) { +- nice_socket_set_writable_callback (pair->sockptr, +- _tcp_sock_is_writable, component2); +- } ++ if (buffer_len == 0) { ++ nice_debug ("Agent %p: buffer is empty, cancelling conncheck", agent); ++ pair->stun_message.buffer = NULL; ++ pair->stun_message.buffer_len = 0; ++ return -1; ++ } + +- nice_component_attach_socket (component2, new_socket); +- } +- } +- } +- /* send the conncheck */ +- agent_socket_send (pair->sockptr, &pair->remote->addr, +- buffer_len, (gchar *)pair->stun_buffer); ++ if (nice_socket_is_reliable(pair->sockptr)) ++ stun_timer_start_reliable(&pair->timer, agent->stun_reliable_timeout); ++ else { ++ StunTimer *timer = &pair->timer; ++ ++ if (pair->recheck_on_timeout) ++ /* The pair recheck on timeout can easily cause repetitive rechecks in ++ * a ping-pong effect, if both peers with the same behaviour try to ++ * check the same pair almost simultaneously, and if the network rtt ++ * is greater than the initial timer rto. The reply to the initial ++ * stun request may arrive after the in-progress conncheck ++ * cancellation (described in RFC 5245, sect 7.2.1.4). Cancellation ++ * creates a new stun request, and forgets the initial one. ++ * The conncheck timer is restarted with the same initial value, ++ * so the same situation happens again later. ++ * ++ * We choose to avoid resetting the timer in such situation. ++ * After enough retransmissions, the timeout delay becomes ++ * longer than the rtt, and the stun reply can be handled. ++ */ ++ nice_debug("Agent %p : reusing timer of pair %p: %d/%d %d/%dms", ++ agent, pair, ++ timer->retransmissions, timer->max_retransmissions, ++ timer->delay - stun_timer_remainder (timer), timer->delay); ++ else ++ stun_timer_start (timer, ++ priv_compute_conncheck_timer (agent, stream), ++ agent->stun_max_retransmissions); ++ pair->recheck_on_timeout = FALSE; ++ } + +- if (agent->compatibility == NICE_COMPATIBILITY_OC2007R2) { +- ms_ice2_legacy_conncheck_send (&pair->stun_message, pair->sockptr, +- &pair->remote->addr); ++ /* TCP-ACTIVE candidate must create a new socket before sending ++ * by connecting to the peer. The new socket is stored in the candidate ++ * check pair, until we discover a new local peer reflexive */ ++ if (pair->sockptr->fileno == NULL && ++ pair->sockptr->type != NICE_SOCKET_TYPE_UDP_TURN && ++ pair->local->transport == NICE_CANDIDATE_TRANSPORT_TCP_ACTIVE) { ++ NiceStream *stream2 = NULL; ++ NiceComponent *component2 = NULL; ++ NiceSocket *new_socket; ++ ++ if (agent_find_component (agent, pair->stream_id, pair->component_id, ++ &stream2, &component2)) { ++ new_socket = nice_tcp_active_socket_connect (pair->sockptr, ++ &pair->remote->addr); ++ if (new_socket) { ++ pair->sockptr = new_socket; ++ _priv_set_socket_tos (agent, pair->sockptr, stream2->tos); ++ ++ if (agent->reliable) ++ nice_socket_set_writable_callback (pair->sockptr, ++ _tcp_sock_is_writable, component2); ++ ++ nice_component_attach_socket (component2, new_socket); + } +- +- timeout = stun_timer_remainder (&pair->timer); +- /* note: convert from milli to microseconds for g_time_val_add() */ +- g_get_current_time (&pair->next_tick); +- g_time_val_add (&pair->next_tick, timeout * 1000); +- } else { +- nice_debug ("Agent %p: buffer is empty, cancelling conncheck", agent); +- pair->stun_message.buffer = NULL; +- pair->stun_message.buffer_len = 0; +- return -1; + } +- } else { +- nice_debug ("Agent %p: no credentials found, cancelling conncheck", agent); +- pair->stun_message.buffer = NULL; +- pair->stun_message.buffer_len = 0; +- return -1; + } ++ /* send the conncheck */ ++ agent_socket_send (pair->sockptr, &pair->remote->addr, ++ buffer_len, (gchar *)pair->stun_buffer); ++ ++ if (agent->compatibility == NICE_COMPATIBILITY_OC2007R2) ++ ms_ice2_legacy_conncheck_send (&pair->stun_message, pair->sockptr, ++ &pair->remote->addr); ++ ++ timeout = stun_timer_remainder (&pair->timer); ++ /* note: convert from milli to microseconds for g_time_val_add() */ ++ g_get_current_time (&pair->next_tick); ++ g_time_val_add (&pair->next_tick, timeout * 1000); + + return 0; + } +@@ -2876,74 +2870,74 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + nice_debug ("Agent %p : Found a matching pair %p (%s) (state=%c) ...", + agent, p, p->foundation, priv_state_to_gchar (p->state)); + +- if (p->state == NICE_CHECK_WAITING || +- p->state == NICE_CHECK_FROZEN) { +- nice_debug ("Agent %p : pair %p added for a triggered check.", +- agent, p); +- priv_add_pair_to_triggered_check_queue (agent, p); +- } +- else if (p->state == NICE_CHECK_IN_PROGRESS) { +- /* note: according to ICE SPEC sect 7.2.1.4 "Triggered Checks" +- * we cancel the in-progress transaction, and after the +- * retransmission timeout, we create a new connectivity check +- * for that pair. The controlling role of this new check may +- * be different from the role of this cancelled check. +- * +- * note: the flag retransmit_on_timeout unset means that +- * another pair, with a higher priority is already nominated, +- * so there's no reason to recheck this pair, since it can in +- * no way replace the nominated one. +- */ +- if (!nice_socket_is_reliable (p->sockptr)) { +- if (p->retransmit_on_timeout) { +- nice_debug ("Agent %p : pair %p will be rechecked " +- "on stun timer timeout.", agent, p); +- /* this flag will determine the action at the retransmission +- * timeout of the stun timer +- */ +- p->recheck_on_timeout = TRUE; +- } else +- nice_debug ("Agent %p : pair %p won't be retransmitted.", +- agent, p); +- } +- } +- else if (p->state == NICE_CHECK_SUCCEEDED) { +- nice_debug ("Agent %p : nothing to do for pair %p.", agent, p); +- /* note: this is a bit unsure corner-case -- let's do the +- same state update as for processing responses to our own checks */ +- /* note: this update is required by the dribble test, to +- * ensure the transition ready -> connected -> ready, because +- * an incoming stun request generates a discovered peer reflexive, +- * that causes the ready -> connected transition. +- */ +- priv_update_check_list_state_for_ready (agent, stream, component); +- } else if (p->state == NICE_CHECK_FAILED) { +- /* 7.2.1.4 Triggered Checks +- * If the state of the pair is Failed, it is changed to Waiting +- * and the agent MUST create a new connectivity check for that +- * pair (representing a new STUN Binding request transaction), by +- * enqueueing the pair in the triggered check queue. +- * +- * note: the flag retransmit_on_timeout unset means that +- * another pair, with a higher priority is already nominated, +- * we apply the same strategy than with an in-progress pair +- * above. +- */ +- if (p->retransmit_on_timeout) { +- nice_debug ("Agent %p : pair %p added for a triggered check.", ++ switch (p->state) { ++ case NICE_CHECK_WAITING: ++ case NICE_CHECK_FROZEN: ++ nice_debug ("Agent %p : pair %p added for a triggered check.", + agent, p); + priv_add_pair_to_triggered_check_queue (agent, p); +- /* If the component for this pair is in failed state, move it +- * back to connecting, and reinitiate the timers ++ break; ++ case NICE_CHECK_IN_PROGRESS: ++ /* note: according to ICE SPEC sect 7.2.1.4 "Triggered Checks" ++ * we cancel the in-progress transaction, and after the ++ * retransmission timeout, we create a new connectivity check ++ * for that pair. The controlling role of this new check may ++ * be different from the role of this cancelled check. ++ * ++ * note: the flag retransmit_on_timeout unset means that ++ * another pair, with a higher priority is already nominated, ++ * so there's no reason to recheck this pair, since it can in ++ * no way replace the nominated one. + */ +- if (component->state == NICE_COMPONENT_STATE_FAILED) { +- agent_signal_component_state_change (agent, stream->id, +- component->id, NICE_COMPONENT_STATE_CONNECTING); +- conn_check_schedule_next (agent); ++ if (!nice_socket_is_reliable (p->sockptr) && ++ p->retransmit_on_timeout) { ++ nice_debug ("Agent %p : pair %p will be rechecked " ++ "on stun timer timeout.", agent, p); ++ /* this flag will determine the action at the retransmission ++ * timeout of the stun timer ++ */ ++ p->recheck_on_timeout = TRUE; + } +- } else +- nice_debug ("Agent %p : pair %p won't be retransmitted.", +- agent, p); ++ break; ++ case NICE_CHECK_SUCCEEDED: ++ nice_debug ("Agent %p : nothing to do for pair %p.", agent, p); ++ /* note: this is a bit unsure corner-case -- let's do the ++ same state update as for processing responses to our own checks */ ++ /* note: this update is required by the dribble test, to ++ * ensure the transition ready -> connected -> ready, because ++ * an incoming stun request generates a discovered peer reflexive, ++ * that causes the ready -> connected transition. ++ */ ++ priv_update_check_list_state_for_ready (agent, stream, component); ++ break; ++ case NICE_CHECK_FAILED: ++ /* 7.2.1.4 Triggered Checks ++ * If the state of the pair is Failed, it is changed to Waiting ++ * and the agent MUST create a new connectivity check for that ++ * pair (representing a new STUN Binding request transaction), by ++ * enqueueing the pair in the triggered check queue. ++ * ++ * note: the flag retransmit_on_timeout unset means that ++ * another pair, with a higher priority is already nominated, ++ * we apply the same strategy than with an in-progress pair ++ * above. ++ */ ++ if (p->retransmit_on_timeout) { ++ nice_debug ("Agent %p : pair %p added for a triggered check.", ++ agent, p); ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ /* If the component for this pair is in failed state, move it ++ * back to connecting, and reinitiate the timers ++ */ ++ if (component->state == NICE_COMPONENT_STATE_FAILED) { ++ agent_signal_component_state_change (agent, stream->id, ++ component->id, NICE_COMPONENT_STATE_CONNECTING); ++ conn_check_schedule_next (agent); ++ } ++ } ++ break; ++ default: ++ break; + } + + /* note: the spec says the we SHOULD retransmit in-progress +@@ -3271,208 +3265,200 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + socklen_t socklen = sizeof (sockaddr); + GSList *i; + StunUsageIceReturn res; +- gboolean trans_found = FALSE; + StunTransactionId discovery_id; + StunTransactionId response_id; + stun_message_id (resp, response_id); + +- for (i = stream->conncheck_list; i && trans_found != TRUE; i = i->next) { ++ for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *p = i->data; + +- if (p->stun_message.buffer) { +- stun_message_id (&p->stun_message, discovery_id); ++ if (p->stun_message.buffer == NULL) ++ continue; + +- if (memcmp (discovery_id, response_id, sizeof(StunTransactionId)) == 0) { +- res = stun_usage_ice_conncheck_process (resp, +- &sockaddr.storage, &socklen, +- agent_to_ice_compatibility (agent)); +- nice_debug ("Agent %p : stun_bind_process/conncheck for %p res %d " +- "(controlling=%d).", agent, p, (int)res, agent->controlling_mode); +- +- if (res == STUN_USAGE_ICE_RETURN_SUCCESS || +- res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { +- /* case: found a matching connectivity check request */ +- +- CandidateCheckPair *ok_pair = NULL; +- +- nice_debug ("Agent %p : conncheck %p MATCHED.", agent, p); +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; +- +- /* step: verify that response came from the same IP address we +- * sent the original request to (see 7.1.2.1. "Failure +- * Cases") */ +- if (nice_address_equal (from, &p->remote->addr) != TRUE) { +- +- p->state = NICE_CHECK_FAILED; +- if (nice_debug_is_enabled ()) { +- gchar tmpbuf[INET6_ADDRSTRLEN]; +- gchar tmpbuf2[INET6_ADDRSTRLEN]; +- nice_debug ("Agent %p : conncheck %p FAILED" +- " (mismatch of source address).", agent, p); +- nice_address_to_string (&p->remote->addr, tmpbuf); +- nice_address_to_string (from, tmpbuf2); +- nice_debug ("Agent %p : '%s:%u' != '%s:%u'", agent, +- tmpbuf, nice_address_get_port (&p->remote->addr), +- tmpbuf2, nice_address_get_port (from)); +- } +- trans_found = TRUE; +- break; +- } ++ stun_message_id (&p->stun_message, discovery_id); + +- /* note: CONNECTED but not yet READY, see docs */ +- +- /* step: handle the possible case of a peer-reflexive +- * candidate where the mapped-address in response does +- * not match any local candidate, see 7.1.2.2.1 +- * "Discovering Peer Reflexive Candidates" ICE ID-19) */ +- +- if (res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { +- /* note: this is same as "adding to VALID LIST" in the spec +- text */ +- p->state = NICE_CHECK_SUCCEEDED; +- p->valid = TRUE; +- g_assert_not_reached (); +- nice_debug ("Agent %p : Mapped address not found." +- " conncheck %p SUCCEEDED.", agent, p); +- nice_component_add_valid_candidate (component, p->remote); +- } else { +- ok_pair = priv_process_response_check_for_reflexive (agent, +- stream, component, p, sockptr, &sockaddr.addr, +- local_candidate, remote_candidate); +- } ++ if (memcmp (discovery_id, response_id, sizeof(StunTransactionId))) ++ continue; + +- /* note: The success of this check might also +- * cause the state of other checks to change as well, ICE +- * spec 7.1.3.2.3 +- */ +- priv_conn_check_unfreeze_related (agent, stream, p); +- +- /* Note: this assignment helps to reduce the numbers of cases +- * to be tested. If ok_pair and p refer to distinct pairs, it +- * means that ok_pair is a discovered peer reflexive one, +- * caused by the check made on pair p. In that case, the +- * flags to be tested are on p, but the nominated flag will be +- * set on ok_pair. When there's no discovered pair, p and +- * ok_pair refer to the same pair. +- * To summarize : p is a SUCCEEDED pair, ok_pair is a +- * DISCOVERED, VALID, and eventually NOMINATED pair. +- */ +- if (!ok_pair) +- ok_pair = p; +- +- /* step: updating nominated flag (ICE 7.1.2.2.4 "Updating the +- Nominated Flag" (ID-19) */ +- if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { +- nice_debug ("Agent %p : Updating nominated flag (%s): " +- "ok_pair=%p (%d/%d) p=%p (%d/%d) (ucnc/mnora)", +- agent, p->local->transport == NICE_CANDIDATE_TRANSPORT_UDP ? +- "UDP" : "TCP", +- ok_pair, ok_pair->use_candidate_on_next_check, +- ok_pair->mark_nominated_on_response_arrival, +- p, p->use_candidate_on_next_check, +- p->mark_nominated_on_response_arrival); +- +- if (agent->controlling_mode) { +- switch (agent->nomination_mode) { +- case NICE_NOMINATION_MODE_REGULAR: +- if (p->use_candidate_on_next_check) { +- nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(regular nomination, control=1, " +- "use_cand_on_next_check=1).", +- agent, ok_pair, ok_pair->foundation); +- ok_pair->nominated = TRUE; +- } +- break; +- case NICE_NOMINATION_MODE_AGGRESSIVE: +- if (!p->nominated) { +- nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(aggressive nomination, control=1).", +- agent, ok_pair, ok_pair->foundation); +- ok_pair->nominated = TRUE; +- } +- break; +- default: +- /* Nothing to do */ +- break; ++ res = stun_usage_ice_conncheck_process (resp, ++ &sockaddr.storage, &socklen, ++ agent_to_ice_compatibility (agent)); ++ nice_debug ("Agent %p : stun_bind_process/conncheck for %p res %d " ++ "(controlling=%d).", agent, p, (int)res, agent->controlling_mode); ++ ++ if (res == STUN_USAGE_ICE_RETURN_SUCCESS || ++ res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { ++ /* case: found a matching connectivity check request */ ++ ++ CandidateCheckPair *ok_pair = NULL; ++ ++ nice_debug ("Agent %p : conncheck %p MATCHED.", agent, p); ++ p->stun_message.buffer = NULL; ++ p->stun_message.buffer_len = 0; ++ ++ /* step: verify that response came from the same IP address we ++ * sent the original request to (see 7.1.2.1. "Failure ++ * Cases") */ ++ if (nice_address_equal (from, &p->remote->addr) == FALSE) { ++ ++ p->state = NICE_CHECK_FAILED; ++ if (nice_debug_is_enabled ()) { ++ gchar tmpbuf[INET6_ADDRSTRLEN]; ++ gchar tmpbuf2[INET6_ADDRSTRLEN]; ++ nice_debug ("Agent %p : conncheck %p FAILED" ++ " (mismatch of source address).", agent, p); ++ nice_address_to_string (&p->remote->addr, tmpbuf); ++ nice_address_to_string (from, tmpbuf2); ++ nice_debug ("Agent %p : '%s:%u' != '%s:%u'", agent, ++ tmpbuf, nice_address_get_port (&p->remote->addr), ++ tmpbuf2, nice_address_get_port (from)); ++ } ++ return TRUE; ++ } ++ ++ /* note: CONNECTED but not yet READY, see docs */ ++ ++ /* step: handle the possible case of a peer-reflexive ++ * candidate where the mapped-address in response does ++ * not match any local candidate, see 7.1.2.2.1 ++ * "Discovering Peer Reflexive Candidates" ICE ID-19) */ ++ ++ if (res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { ++ p->state = NICE_CHECK_SUCCEEDED; ++ p->valid = TRUE; ++ nice_debug ("Agent %p : Mapped address not found." ++ " conncheck %p SUCCEEDED.", agent, p); ++ nice_component_add_valid_candidate (component, p->remote); ++ } else ++ ok_pair = priv_process_response_check_for_reflexive (agent, ++ stream, component, p, sockptr, &sockaddr.addr, ++ local_candidate, remote_candidate); ++ ++ /* note: The success of this check might also ++ * cause the state of other checks to change as well, ICE ++ * spec 7.1.3.2.3 ++ */ ++ priv_conn_check_unfreeze_related (agent, stream, p); ++ ++ /* Note: this assignment helps to reduce the numbers of cases ++ * to be tested. If ok_pair and p refer to distinct pairs, it ++ * means that ok_pair is a discovered peer reflexive one, ++ * caused by the check made on pair p. In that case, the ++ * flags to be tested are on p, but the nominated flag will be ++ * set on ok_pair. When there's no discovered pair, p and ++ * ok_pair refer to the same pair. ++ * To summarize : p is a SUCCEEDED pair, ok_pair is a ++ * DISCOVERED, VALID, and eventually NOMINATED pair. ++ */ ++ if (!ok_pair) ++ ok_pair = p; ++ ++ /* step: updating nominated flag (ICE 7.1.2.2.4 "Updating the ++ Nominated Flag" (ID-19) */ ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ nice_debug ("Agent %p : Updating nominated flag (%s): " ++ "ok_pair=%p (%d/%d) p=%p (%d/%d) (ucnc/mnora)", ++ agent, p->local->transport == NICE_CANDIDATE_TRANSPORT_UDP ? ++ "UDP" : "TCP", ++ ok_pair, ok_pair->use_candidate_on_next_check, ++ ok_pair->mark_nominated_on_response_arrival, ++ p, p->use_candidate_on_next_check, ++ p->mark_nominated_on_response_arrival); ++ ++ if (agent->controlling_mode) { ++ switch (agent->nomination_mode) { ++ case NICE_NOMINATION_MODE_REGULAR: ++ if (p->use_candidate_on_next_check) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(regular nomination, control=1, " ++ "use_cand_on_next_check=1).", ++ agent, ok_pair, ok_pair->foundation); ++ ok_pair->nominated = TRUE; + } +- } else { +- if (p->mark_nominated_on_response_arrival) { ++ break; ++ case NICE_NOMINATION_MODE_AGGRESSIVE: ++ if (!p->nominated) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(%s nomination, control=0, mark_on_response=1).", +- agent, ok_pair, ok_pair->foundation, +- agent->nomination_mode == NICE_NOMINATION_MODE_AGGRESSIVE ? +- "aggressive" : "regular"); ++ "(aggressive nomination, control=1).", ++ agent, ok_pair, ok_pair->foundation); + ok_pair->nominated = TRUE; + } +- } ++ break; ++ default: ++ /* Nothing to do */ ++ break; + } +- +- if (ok_pair->nominated == TRUE) { +- priv_update_selected_pair (agent, component, ok_pair); +- priv_print_conn_check_lists (agent, G_STRFUNC, +- ", got a nominated pair"); +- +- /* Do not step down to CONNECTED if we're already at state READY*/ +- if (component->state != NICE_COMPONENT_STATE_READY) { +- /* step: notify the client of a new component state (must be done +- * before the possible check list state update step */ +- agent_signal_component_state_change (agent, +- stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); +- } ++ } else { ++ if (p->mark_nominated_on_response_arrival) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(%s nomination, control=0, mark_on_response=1).", ++ agent, ok_pair, ok_pair->foundation, ++ agent->nomination_mode == NICE_NOMINATION_MODE_AGGRESSIVE ? ++ "aggressive" : "regular"); ++ ok_pair->nominated = TRUE; + } ++ } ++ } + +- /* step: update pair states (ICE 7.1.2.2.3 "Updating pair +- states" and 8.1.2 "Updating States", ID-19) */ +- priv_update_check_list_state_for_ready (agent, stream, component); ++ if (ok_pair->nominated == TRUE) { ++ priv_update_selected_pair (agent, component, ok_pair); ++ priv_print_conn_check_lists (agent, G_STRFUNC, ++ ", got a nominated pair"); + +- trans_found = TRUE; +- } else if (res == STUN_USAGE_ICE_RETURN_ROLE_CONFLICT) { +- /* case: role conflict error, need to restart with new role */ +- nice_debug ("Agent %p : conncheck %p ROLE CONFLICT, restarting", agent, p); +- +- /* note: this res value indicates that the role of the peer +- * agent has not changed after the tie-breaker comparison, so +- * this is our role that must change. see ICE sect. 7.1.3.1 +- * "Failure Cases". Our role might already have changed due to +- * an earlier incoming request, but if not, change role now. +- * +- * Sect. 7.1.3.1 is not clear on this point, but we choose to +- * put the candidate pair in the triggered check list even +- * when the agent did not switch its role. The reason for this +- * interpretation is that the reception of the stun reply, even +- * an error reply, is a good sign that this pair will be +- * valid, if we retry the check after the role of both peers +- * has been fixed. +- */ ++ /* Do not step down to CONNECTED if we're already at state READY*/ ++ if (component->state != NICE_COMPONENT_STATE_READY) ++ /* step: notify the client of a new component state (must be done ++ * before the possible check list state update step */ ++ agent_signal_component_state_change (agent, ++ stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); ++ } + +- if (p->stun_message.buffer != NULL) { +- guint64 tie; +- gboolean controlled_mode; ++ /* step: update pair states (ICE 7.1.2.2.3 "Updating pair ++ states" and 8.1.2 "Updating States", ID-19) */ ++ priv_update_check_list_state_for_ready (agent, stream, component); ++ } else if (res == STUN_USAGE_ICE_RETURN_ROLE_CONFLICT) { ++ /* case: role conflict error, need to restart with new role */ ++ nice_debug ("Agent %p : conncheck %p ROLE CONFLICT, restarting", agent, p); ++ ++ /* note: this res value indicates that the role of the peer ++ * agent has not changed after the tie-breaker comparison, so ++ * this is our role that must change. see ICE sect. 7.1.3.1 ++ * "Failure Cases". Our role might already have changed due to ++ * an earlier incoming request, but if not, change role now. ++ * ++ * Sect. 7.1.3.1 is not clear on this point, but we choose to ++ * put the candidate pair in the triggered check list even ++ * when the agent did not switch its role. The reason for this ++ * interpretation is that the reception of the stun reply, even ++ * an error reply, is a good sign that this pair will be ++ * valid, if we retry the check after the role of both peers ++ * has been fixed. ++ */ + +- controlled_mode = (stun_message_find64 (&p->stun_message, +- STUN_ATTRIBUTE_ICE_CONTROLLED, &tie) == +- STUN_MESSAGE_RETURN_SUCCESS); ++ if (p->stun_message.buffer != NULL) { ++ guint64 tie; ++ gboolean controlled_mode; + +- priv_check_for_role_conflict (agent, controlled_mode); ++ controlled_mode = (stun_message_find64 (&p->stun_message, ++ STUN_ATTRIBUTE_ICE_CONTROLLED, &tie) == ++ STUN_MESSAGE_RETURN_SUCCESS); + +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; +- priv_add_pair_to_triggered_check_queue (agent, p); +- } +- trans_found = TRUE; +- } else { +- /* case: STUN error, the check STUN context was freed */ +- nice_debug ("Agent %p : conncheck %p FAILED.", agent, p); +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; +- trans_found = TRUE; +- } ++ priv_check_for_role_conflict (agent, controlled_mode); ++ ++ p->stun_message.buffer = NULL; ++ p->stun_message.buffer_len = 0; ++ priv_add_pair_to_triggered_check_queue (agent, p); + } ++ } else { ++ /* case: STUN error, the check STUN context was freed */ ++ nice_debug ("Agent %p : conncheck %p FAILED.", agent, p); ++ p->stun_message.buffer = NULL; ++ p->stun_message.buffer_len = 0; + } ++ return TRUE; + } + +- return trans_found; ++ return FALSE; + } + + /* +-- +2.13.6 + + +From ce33747e6fc9ca59ea22d54e3b5a9a67b69d8141 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 26 Jun 2017 20:41:49 +0200 +Subject: [PATCH 56/70] conncheck: make debug sentences more accurate + +We add a helper function to print the pair state in-extenso. + +Differential Revision: https://phabricator.freedesktop.org/D1759 +--- + agent/conncheck.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 61 insertions(+), 9 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 874f7b1..9517ee1 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -108,6 +108,54 @@ priv_state_to_gchar (NiceCheckState state) + } + + static const gchar * ++priv_state_to_string (NiceCheckState state) ++{ ++ switch (state) { ++ case NICE_CHECK_WAITING: ++ return "waiting"; ++ case NICE_CHECK_IN_PROGRESS: ++ return "in progress"; ++ case NICE_CHECK_SUCCEEDED: ++ return "succeeded"; ++ case NICE_CHECK_FAILED: ++ return "failed"; ++ case NICE_CHECK_FROZEN: ++ return "frozen"; ++ case NICE_CHECK_DISCOVERED: ++ return "discovered"; ++ default: ++ g_assert_not_reached (); ++ } ++} ++ ++static const gchar * ++priv_ice_return_to_string (StunUsageIceReturn ice_return) ++{ ++ switch (ice_return) { ++ case STUN_USAGE_ICE_RETURN_SUCCESS: ++ return "success"; ++ case STUN_USAGE_ICE_RETURN_ERROR: ++ return "error"; ++ case STUN_USAGE_ICE_RETURN_INVALID: ++ return "invalid"; ++ case STUN_USAGE_ICE_RETURN_ROLE_CONFLICT: ++ return "role conflict"; ++ case STUN_USAGE_ICE_RETURN_INVALID_REQUEST: ++ return "invalid request"; ++ case STUN_USAGE_ICE_RETURN_INVALID_METHOD: ++ return "invalid method"; ++ case STUN_USAGE_ICE_RETURN_MEMORY_ERROR: ++ return "memory error"; ++ case STUN_USAGE_ICE_RETURN_INVALID_ADDRESS: ++ return "invalid address"; ++ case STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS: ++ return "no mapped address"; ++ default: ++ g_assert_not_reached (); ++ } ++} ++ ++static const gchar * + priv_candidate_type_to_string (NiceCandidateType type) + { + switch (type) { +@@ -2614,7 +2662,7 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + nice_address_to_string (&pair->remote->addr, tmpbuf2); + nice_debug ("Agent %p : STUN-CC REQ [%s]:%u --> [%s]:%u, socket=%u, " + "pair=%s (c-id:%u), tie=%llu, username='%.*s' (%" G_GSIZE_FORMAT "), " +- "password='%.*s' (%" G_GSIZE_FORMAT "), prio=%u, cont=%d.", agent, ++ "password='%.*s' (%" G_GSIZE_FORMAT "), prio=%u, %s.", agent, + tmpbuf1, nice_address_get_port (&pair->local->addr), + tmpbuf2, nice_address_get_port (&pair->remote->addr), + pair->sockptr->fileno ? g_socket_get_fd(pair->sockptr->fileno) : -1, +@@ -2622,7 +2670,8 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + (unsigned long long)agent->tie_breaker, + (int) uname_len, uname, uname_len, + (int) password_len, password, password_len, +- pair->prflx_priority, controlling); ++ pair->prflx_priority, ++ controlling ? "controlling" : "controlled"); + } + + if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { +@@ -2867,8 +2916,8 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + p = p->succeeded_pair; + } + +- nice_debug ("Agent %p : Found a matching pair %p (%s) (state=%c) ...", +- agent, p, p->foundation, priv_state_to_gchar (p->state)); ++ nice_debug ("Agent %p : Found a matching pair %p (%s) (%s) ...", ++ agent, p, p->foundation, priv_state_to_string (p->state)); + + switch (p->state) { + case NICE_CHECK_WAITING: +@@ -3283,8 +3332,11 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + res = stun_usage_ice_conncheck_process (resp, + &sockaddr.storage, &socklen, + agent_to_ice_compatibility (agent)); +- nice_debug ("Agent %p : stun_bind_process/conncheck for %p res %d " +- "(controlling=%d).", agent, p, (int)res, agent->controlling_mode); ++ nice_debug ("Agent %p : stun_bind_process/conncheck for %p: " ++ "%s,res=%s.", ++ agent, p, ++ agent->controlling_mode ? "controlling" : "controlled", ++ priv_ice_return_to_string (res)); + + if (res == STUN_USAGE_ICE_RETURN_SUCCESS || + res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { +@@ -3370,7 +3422,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + case NICE_NOMINATION_MODE_REGULAR: + if (p->use_candidate_on_next_check) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(regular nomination, control=1, " ++ "(regular nomination, controlling, " + "use_cand_on_next_check=1).", + agent, ok_pair, ok_pair->foundation); + ok_pair->nominated = TRUE; +@@ -3379,7 +3431,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + case NICE_NOMINATION_MODE_AGGRESSIVE: + if (!p->nominated) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(aggressive nomination, control=1).", ++ "(aggressive nomination, controlling).", + agent, ok_pair, ok_pair->foundation); + ok_pair->nominated = TRUE; + } +@@ -3391,7 +3443,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + } else { + if (p->mark_nominated_on_response_arrival) { + nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(%s nomination, control=0, mark_on_response=1).", ++ "(%s nomination, controlled, mark_on_response=1).", + agent, ok_pair, ok_pair->foundation, + agent->nomination_mode == NICE_NOMINATION_MODE_AGGRESSIVE ? + "aggressive" : "regular"); +-- +2.13.6 + + +From e860948b5fe3a791119957f26045b8f5159baeff Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 26 Jun 2017 21:06:36 +0200 +Subject: [PATCH 57/70] conncheck: use stun_timer_remainder less frequently + +We try to use stun_timer_remainder() less frequently, particularily +in the debug messages, and favour of the next_tick value associated +to the pair. + +Differential Revision: https://phabricator.freedesktop.org/D1760 +--- + agent/conncheck.c | 77 ++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 48 insertions(+), 29 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 9517ee1..8075d4f 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -86,6 +86,17 @@ static int priv_timer_expired (GTimeVal *timer, GTimeVal *now) + now->tv_sec >= timer->tv_sec; + } + ++static unsigned int priv_timer_remainder (GTimeVal *timer, GTimeVal *now) ++{ ++ unsigned int delay; ++ if (now->tv_sec > timer->tv_sec || ++ (now->tv_sec == timer->tv_sec && now->tv_usec > timer->tv_usec)) ++ return 0; ++ delay = (timer->tv_sec - now->tv_sec) * 1000; ++ delay += ((signed long)(timer->tv_usec - now->tv_usec)) / 1000; ++ return delay; ++} ++ + static gchar + priv_state_to_gchar (NiceCheckState state) + { +@@ -180,10 +191,13 @@ priv_print_conn_check_lists (NiceAgent *agent, const gchar *where, const gchar * + { + GSList *i, *k; + guint j; ++ GTimeVal now; + + if (!nice_debug_is_verbose ()) + return; + ++ g_get_current_time (&now); ++ + #define PRIORITY_LEN 32 + + nice_debug ("Agent %p : *** conncheck list DUMP (called from %s%s)", +@@ -209,7 +223,8 @@ priv_print_conn_check_lists (NiceAgent *agent, const gchar *where, const gchar * + priv_candidate_type_to_string (pair->local->type), + priv_candidate_type_to_string (pair->remote->type), + timer->retransmissions, timer->max_retransmissions, +- timer->delay - stun_timer_remainder (timer), timer->delay, ++ timer->delay - priv_timer_remainder (&pair->next_tick, &now), ++ timer->delay, + local_addr, nice_address_get_port (&pair->local->addr), + remote_addr, nice_address_get_port (&pair->remote->addr), + priv_state_to_gchar (pair->state), +@@ -445,8 +460,6 @@ priv_find_first_frozen_check_list (NiceAgent *agent) + */ + static gboolean priv_conn_check_initiate (NiceAgent *agent, CandidateCheckPair *pair) + { +- g_get_current_time (&pair->next_tick); +- g_time_val_add (&pair->next_tick, agent->timer_ta * 1000); + pair->state = NICE_CHECK_IN_PROGRESS; + nice_debug ("Agent %p : pair %p state IN_PROGRESS", agent, pair); + conn_check_send (agent, pair); +@@ -651,12 +664,15 @@ priv_conn_recheck_on_timeout (NiceAgent *agent, CandidateCheckPair *p) + * + * @return will return FALSE when no more pending timers. + */ +-static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agent, GTimeVal *now) ++static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agent) + { + gboolean keep_timer_going = FALSE; + GSList *i; + CandidateCheckPair *pair; + unsigned int timeout; ++ GTimeVal now; ++ ++ g_get_current_time (&now); + + /* step: process ongoing STUN transactions */ + for (i = stream->conncheck_list; i ; i = i->next) { +@@ -678,7 +694,7 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + continue; + } + +- if (!priv_timer_expired (&p->next_tick, now)) ++ if (!priv_timer_expired (&p->next_tick, &now)) + continue; + + switch (stun_timer_refresh (&p->timer)) { +@@ -712,8 +728,6 @@ timer_timeout: + priv_update_check_list_state_for_ready (agent, stream, component); + break; + case STUN_USAGE_TIMER_RETURN_RETRANSMIT: +- timeout = stun_timer_remainder (&p->timer); +- + /* case: retransmission stopped, due to the nomination of + * a pair with a higher priority than this in-progress pair, + * ICE spec, sect 8.1.2 "Updating States", item 2.2 +@@ -730,9 +744,13 @@ timer_timeout: + break; + + /* case: not ready, so schedule a new timeout */ ++ timeout = stun_timer_remainder (&p->timer); ++ + nice_debug ("Agent %p :STUN transaction retransmitted on pair %p " +- "(timeout %dms, delay=%dms, retrans=%d).", +- agent, p, timeout, p->timer.delay, p->timer.retransmissions); ++ "(timer=%d/%d %d/%dms).", ++ agent, p, ++ p->timer.retransmissions, p->timer.max_retransmissions, ++ p->timer.delay - timeout, p->timer.delay); + + agent_socket_send (p->sockptr, &p->remote->addr, + stun_message_length (&p->stun_message), +@@ -740,7 +758,7 @@ timer_timeout: + + + /* note: convert from milli to microseconds for g_time_val_add() */ +- p->next_tick = *now; ++ p->next_tick = now; + g_time_val_add (&p->next_tick, timeout * 1000); + + return TRUE; +@@ -748,7 +766,7 @@ timer_timeout: + timeout = stun_timer_remainder (&p->timer); + + /* note: convert from milli to microseconds for g_time_val_add() */ +- p->next_tick = *now; ++ p->next_tick = now; + g_time_val_add (&p->next_tick, timeout * 1000); + + keep_timer_going = TRUE; +@@ -1001,9 +1019,6 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + CandidateCheckPair *pair = NULL; + gboolean keep_timer_going = FALSE; + GSList *i, *j; +- GTimeVal now; +- +- g_get_current_time (&now); + + /* the conncheck really starts when we have built + * a connection check list for each stream +@@ -1047,7 +1062,7 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + */ + for (i = agent->streams; i ; i = i->next) { + NiceStream *stream = i->data; +- if (priv_conn_check_tick_stream (stream, agent, &now)) ++ if (priv_conn_check_tick_stream (stream, agent)) + keep_timer_going = TRUE; + if (priv_conn_check_tick_stream_nominate (stream, agent)) + keep_timer_going = TRUE; +@@ -2731,12 +2746,14 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + return -1; + } + +- if (nice_socket_is_reliable(pair->sockptr)) +- stun_timer_start_reliable(&pair->timer, agent->stun_reliable_timeout); +- else { ++ if (nice_socket_is_reliable(pair->sockptr)) { ++ timeout = agent->stun_reliable_timeout; ++ stun_timer_start_reliable(&pair->timer, timeout); ++ } else { + StunTimer *timer = &pair->timer; + +- if (pair->recheck_on_timeout) ++ if (pair->recheck_on_timeout) { ++ GTimeVal now; + /* The pair recheck on timeout can easily cause repetitive rechecks in + * a ping-pong effect, if both peers with the same behaviour try to + * check the same pair almost simultaneously, and if the network rtt +@@ -2751,17 +2768,24 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + * After enough retransmissions, the timeout delay becomes + * longer than the rtt, and the stun reply can be handled. + */ ++ ++ g_get_current_time (&now); ++ timeout = priv_timer_remainder (&pair->next_tick, &now); + nice_debug("Agent %p : reusing timer of pair %p: %d/%d %d/%dms", + agent, pair, + timer->retransmissions, timer->max_retransmissions, +- timer->delay - stun_timer_remainder (timer), timer->delay); +- else +- stun_timer_start (timer, +- priv_compute_conncheck_timer (agent, stream), +- agent->stun_max_retransmissions); ++ timer->delay - timeout, ++ timer->delay); ++ } else { ++ timeout = priv_compute_conncheck_timer (agent, stream); ++ stun_timer_start (timer, timeout, agent->stun_max_retransmissions); ++ } + pair->recheck_on_timeout = FALSE; + } + ++ g_get_current_time (&pair->next_tick); ++ g_time_val_add (&pair->next_tick, timeout * 1000); ++ + /* TCP-ACTIVE candidate must create a new socket before sending + * by connecting to the peer. The new socket is stored in the candidate + * check pair, until we discover a new local peer reflexive */ +@@ -2796,11 +2820,6 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + ms_ice2_legacy_conncheck_send (&pair->stun_message, pair->sockptr, + &pair->remote->addr); + +- timeout = stun_timer_remainder (&pair->timer); +- /* note: convert from milli to microseconds for g_time_val_add() */ +- g_get_current_time (&pair->next_tick); +- g_time_val_add (&pair->next_tick, timeout * 1000); +- + return 0; + } + +-- +2.13.6 + + +From 36f306f4a95f1c2b3e9c584b5a645a78e231c020 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 26 Jun 2017 21:41:44 +0200 +Subject: [PATCH 58/70] conncheck: support several stun requests per pair + +This patch should improve the reliabily of the connection check by +keeping the record of several simultaneous ongoing stun requests per +pair. A new stun request on an in-progress pair typically is caused by +in inbound stun request from the peer on this same pair. This is named +"Triggered Checks" in the spec. When this situation arises, it is fair +to handle these two stun requests simultaneously, the triggered check, +and the initial ordinary check, since both can potentially succeed. + +Differential Revision: https://phabricator.freedesktop.org/D1761 +--- + agent/conncheck.c | 701 +++++++++++++++++++++++++++--------------------------- + agent/conncheck.h | 21 +- + 2 files changed, 361 insertions(+), 361 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 8075d4f..2a85738 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -189,8 +189,8 @@ priv_candidate_type_to_string (NiceCandidateType type) + static void + priv_print_conn_check_lists (NiceAgent *agent, const gchar *where, const gchar *detail) + { +- GSList *i, *k; +- guint j; ++ GSList *i, *k, *l; ++ guint j, m; + GTimeVal now; + + if (!nice_debug_is_verbose ()) +@@ -210,27 +210,34 @@ priv_print_conn_check_lists (NiceAgent *agent, const gchar *where, const gchar * + if (pair->component_id == j) { + gchar local_addr[INET6_ADDRSTRLEN]; + gchar remote_addr[INET6_ADDRSTRLEN]; +- StunTimer *timer = &pair->timer; + + nice_address_to_string (&pair->local->addr, local_addr); + nice_address_to_string (&pair->remote->addr, remote_addr); + + nice_debug ("Agent %p : *** sc=%d/%d : pair %p : " +- "f=%s t=%s:%s timer=%d/%d %d/%dms " +- "[%s]:%u > [%s]:%u state=%c%s%s%s", ++ "f=%s t=%s:%s [%s]:%u > [%s]:%u state=%c%s%s%s", + agent, pair->stream_id, pair->component_id, pair, + pair->foundation, + priv_candidate_type_to_string (pair->local->type), + priv_candidate_type_to_string (pair->remote->type), +- timer->retransmissions, timer->max_retransmissions, +- timer->delay - priv_timer_remainder (&pair->next_tick, &now), +- timer->delay, + local_addr, nice_address_get_port (&pair->local->addr), + remote_addr, nice_address_get_port (&pair->remote->addr), + priv_state_to_gchar (pair->state), + pair->valid ? "V" : "", + pair->nominated ? "N" : "", + g_slist_find (agent->triggered_check_queue, pair) ? "T" : ""); ++ ++ for (l = pair->stun_transactions, m = 0; l; l = l->next, m++) { ++ StunTransaction *stun = l->data; ++ nice_debug ("Agent %p : *** sc=%d/%d : pair %p : " ++ "stun#=%d timer=%d/%d %d/%dms buf=%p %s", ++ agent, pair->stream_id, pair->component_id, pair, m, ++ stun->timer.retransmissions, stun->timer.max_retransmissions, ++ stun->timer.delay - priv_timer_remainder (&stun->next_tick, &now), ++ stun->timer.delay, ++ stun->message.buffer, ++ (m == 0 && pair->retransmit) ? "(R)" : ""); ++ } + } + } + } +@@ -608,52 +615,92 @@ static void priv_conn_check_unfreeze_related (NiceAgent *agent, NiceStream *stre + } + } + ++/* ++ * Create a new STUN transaction and add it to the list ++ * of ongoing stun transactions of a pair. ++ * ++ * @pair the pair the new stun transaction should be added to. ++ * @return the created stun transaction. ++ */ ++static StunTransaction * ++priv_add_stun_transaction (CandidateCheckPair *pair) ++{ ++ StunTransaction *stun = g_slice_new0 (StunTransaction); ++ pair->stun_transactions = g_slist_prepend (pair->stun_transactions, stun); ++ pair->retransmit = TRUE; ++ return stun; ++} ++ ++/* ++ * Forget a STUN transaction. ++ * ++ * @data the stun transaction to be forgotten. ++ * @user_data the component contained the concerned stun agent. ++ */ + static void +-candidate_check_pair_fail (NiceStream *stream, NiceAgent *agent, CandidateCheckPair *p) ++priv_forget_stun_transaction (gpointer data, gpointer user_data) + { ++ StunTransaction *stun = data; ++ NiceComponent *component = user_data; + StunTransactionId id; +- NiceComponent *component; +- +- component = nice_stream_find_component_by_id (stream, p->component_id); +- +- p->state = NICE_CHECK_FAILED; +- nice_debug ("Agent %p : pair %p state FAILED", agent, p); + +- if (p->stun_message.buffer != NULL) { +- stun_message_id (&p->stun_message, id); ++ if (stun->message.buffer != NULL) { ++ stun_message_id (&stun->message, id); + stun_agent_forget_transaction (&component->stun_agent, id); + } ++} + +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; ++static void ++priv_free_stun_transaction (gpointer data) ++{ ++ g_slice_free (StunTransaction, data); + } + + /* +- * Function that resubmits a new connection check, after a previous +- * check in in-progress state got cancelled due to an incoming stun +- * request matching this same pair ++ * Remove a STUN transaction from a pair, and forget it ++ * from the related component stun agent. + * +- * @return will return TRUE if the pair is scheduled for recheck ++ * @pair the pair the stun transaction should be removed from. ++ * @stun the stun transaction to be removed. ++ * @component the component containing the stun agent used to ++ * forget the stun transaction. + */ +-static gboolean +-priv_conn_recheck_on_timeout (NiceAgent *agent, CandidateCheckPair *p) ++static void ++priv_remove_stun_transaction (CandidateCheckPair *pair, ++ StunTransaction *stun, NiceComponent *component) + { +- if (p->recheck_on_timeout) { +- g_assert (p->state == NICE_CHECK_IN_PROGRESS); +- /* this cancelled pair may have the flag 'mark nominated +- * on response arrival' set, we want to keep it, because +- * this is needed to nominate this pair in aggressive +- * nomination, when the agent is in controlled mode. +- * +- * this cancelled pair may also have the flag 'use candidate +- * on next check' set, that we want to preserve too. +- */ +- nice_debug ("Agent %p : pair %p was cancelled, " +- "triggering a new connection check", agent, p); +- priv_add_pair_to_triggered_check_queue (agent, p); +- return TRUE; +- } +- return FALSE; ++ priv_forget_stun_transaction (stun, component); ++ pair->stun_transactions = g_slist_remove (pair->stun_transactions, stun); ++ priv_free_stun_transaction (stun); ++} ++ ++/* ++ * Remove all STUN transactions from a pair, and forget them ++ * from the related component stun agent. ++ * ++ * @pair the pair the stun list should be cleared. ++ * @component the component containing the stun agent used to ++ * forget the stun transactions. ++ */ ++static void ++priv_free_all_stun_transactions (CandidateCheckPair *pair, ++ NiceComponent *component) ++{ ++ if (component) ++ g_slist_foreach (pair->stun_transactions, priv_forget_stun_transaction, component); ++ g_slist_free_full (pair->stun_transactions, priv_free_stun_transaction); ++ pair->stun_transactions = NULL; ++} ++ ++static void ++candidate_check_pair_fail (NiceStream *stream, NiceAgent *agent, CandidateCheckPair *p) ++{ ++ NiceComponent *component; ++ ++ component = nice_stream_find_component_by_id (stream, p->component_id); ++ p->state = NICE_CHECK_FAILED; ++ nice_debug ("Agent %p : pair %p state FAILED", agent, p); ++ priv_free_all_stun_transactions (p, component); + } + + /* +@@ -667,7 +714,7 @@ priv_conn_recheck_on_timeout (NiceAgent *agent, CandidateCheckPair *p) + static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agent) + { + gboolean keep_timer_going = FALSE; +- GSList *i; ++ GSList *i, *j; + CandidateCheckPair *pair; + unsigned int timeout; + GTimeVal now; +@@ -679,39 +726,59 @@ static gboolean priv_conn_check_tick_stream (NiceStream *stream, NiceAgent *agen + CandidateCheckPair *p = i->data; + gchar tmpbuf1[INET6_ADDRSTRLEN], tmpbuf2[INET6_ADDRSTRLEN]; + NiceComponent *component; ++ StunTransaction *stun; ++ ++ if (p->stun_transactions == NULL) ++ continue; + + if (!agent_find_component (agent, p->stream_id, p->component_id, + NULL, &component)) + continue; + +- if (p->state != NICE_CHECK_IN_PROGRESS) +- continue; ++ /* The first stun transaction of the list may eventually be ++ * retransmitted, other stun transactions just have their ++ * timer updated. ++ */ + +- if (p->stun_message.buffer == NULL) { +- nice_debug ("Agent %p : STUN connectivity check was cancelled, marking as done.", agent); +- p->state = NICE_CHECK_FAILED; +- nice_debug ("Agent %p : pair %p state FAILED", agent, p); +- continue; ++ j = p->stun_transactions->next; ++ ++ /* process all stun transactions except the first one */ ++ while (j) { ++ StunTransaction *s = j->data; ++ GSList *next = j->next; ++ ++ if (priv_timer_expired (&s->next_tick, &now)) ++ switch (stun_timer_refresh (&s->timer)) { ++ case STUN_USAGE_TIMER_RETURN_TIMEOUT: ++ priv_remove_stun_transaction (p, s, component); ++ break; ++ case STUN_USAGE_TIMER_RETURN_RETRANSMIT: ++ timeout = stun_timer_remainder (&s->timer); ++ s->next_tick = now; ++ g_time_val_add (&s->next_tick, timeout * 1000); ++ break; ++ default: ++ break; ++ } ++ j = next; + } + +- if (!priv_timer_expired (&p->next_tick, &now)) ++ if (p->state != NICE_CHECK_IN_PROGRESS) + continue; + +- switch (stun_timer_refresh (&p->timer)) { +- case STUN_USAGE_TIMER_RETURN_TIMEOUT: +-timer_timeout: +- /* case: conncheck cancelled due to in-progress incoming +- * check, requeing the pair, ICE spec, sect 7.2.1.4 +- * "Triggered Checks", "If the state of that pair is +- * In-Progress..." +- */ +- if (priv_conn_recheck_on_timeout (agent, p)) +- break; ++ /* process the first stun transaction of the list */ ++ stun = p->stun_transactions->data; ++ if (!priv_timer_expired (&stun->next_tick, &now)) ++ continue; + ++ switch (stun_timer_refresh (&stun->timer)) { ++ case STUN_USAGE_TIMER_RETURN_TIMEOUT: ++timer_return_timeout: + /* case: error, abort processing */ + nice_address_to_string (&p->local->addr, tmpbuf1); + nice_address_to_string (&p->remote->addr, tmpbuf2); +- nice_debug ("Agent %p : Retransmissions failed, giving up on connectivity check %p", agent, p); ++ nice_debug ("Agent %p : Retransmissions failed, giving up on " ++ "connectivity check %p", agent, p); + nice_debug ("Agent %p : Failed pair is [%s]:%u --> [%s]:%u", agent, + tmpbuf1, nice_address_get_port (&p->local->addr), + tmpbuf2, nice_address_get_port (&p->remote->addr)); +@@ -732,42 +799,33 @@ timer_timeout: + * a pair with a higher priority than this in-progress pair, + * ICE spec, sect 8.1.2 "Updating States", item 2.2 + */ +- if (!p->retransmit_on_timeout) +- goto timer_timeout; +- +- /* case: conncheck cancelled due to in-progress incoming +- * check, requeing the pair, ICE spec, sect 7.2.1.4 +- * "Triggered Checks", "If the state of that pair is +- * In-Progress..." +- */ +- if (priv_conn_recheck_on_timeout (agent, p)) +- break; ++ if (!p->retransmit) ++ goto timer_return_timeout; + + /* case: not ready, so schedule a new timeout */ +- timeout = stun_timer_remainder (&p->timer); ++ timeout = stun_timer_remainder (&stun->timer); + + nice_debug ("Agent %p :STUN transaction retransmitted on pair %p " + "(timer=%d/%d %d/%dms).", + agent, p, +- p->timer.retransmissions, p->timer.max_retransmissions, +- p->timer.delay - timeout, p->timer.delay); ++ stun->timer.retransmissions, stun->timer.max_retransmissions, ++ stun->timer.delay - timeout, stun->timer.delay); + + agent_socket_send (p->sockptr, &p->remote->addr, +- stun_message_length (&p->stun_message), +- (gchar *)p->stun_buffer); +- ++ stun_message_length (&stun->message), ++ (gchar *)stun->buffer); + + /* note: convert from milli to microseconds for g_time_val_add() */ +- p->next_tick = now; +- g_time_val_add (&p->next_tick, timeout * 1000); ++ stun->next_tick = now; ++ g_time_val_add (&stun->next_tick, timeout * 1000); + + return TRUE; + case STUN_USAGE_TIMER_RETURN_SUCCESS: +- timeout = stun_timer_remainder (&p->timer); ++ timeout = stun_timer_remainder (&stun->timer); + + /* note: convert from milli to microseconds for g_time_val_add() */ +- p->next_tick = now; +- g_time_val_add (&p->next_tick, timeout * 1000); ++ stun->next_tick = now; ++ g_time_val_add (&stun->next_tick, timeout * 1000); + + keep_timer_going = TRUE; + break; +@@ -948,7 +1006,6 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + g_assert (p->state == NICE_CHECK_SUCCEEDED); + nice_debug ("Agent %p : restarting check %p with " + "USE-CANDIDATE attrib (regular nomination)", agent, p); +- p->recheck_on_timeout = FALSE; + p->use_candidate_on_next_check = TRUE; + priv_add_pair_to_triggered_check_queue (agent, p); + keep_timer_going = TRUE; +@@ -972,7 +1029,6 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + p->state == NICE_CHECK_DISCOVERED)) { + nice_debug ("Agent %p : restarting check %p as the nominated pair.", agent, p); + p->nominated = TRUE; +- p->recheck_on_timeout = FALSE; + priv_update_selected_pair (agent, component, p); + priv_add_pair_to_triggered_check_queue (agent, p); + keep_timer_going = TRUE; +@@ -2186,7 +2242,6 @@ static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + } + pair->prflx_priority = ensure_unique_priority (component, + peer_reflexive_candidate_priority (agent, local)); +- pair->retransmit_on_timeout = TRUE; + + stream->conncheck_list = g_slist_insert_sorted (stream->conncheck_list, pair, + (GCompareFunc)conn_check_compare); +@@ -2381,8 +2436,7 @@ static void conn_check_free_item (gpointer data) + + if (pair->agent) + priv_remove_pair_from_triggered_check_queue (pair->agent, pair); +- pair->stun_message.buffer = NULL; +- pair->stun_message.buffer_len = 0; ++ priv_free_all_stun_transactions (pair, NULL); + g_slice_free (CandidateCheckPair, pair); + } + +@@ -2655,6 +2709,7 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + bool cand_use = controlling; + size_t buffer_len; + unsigned int timeout; ++ StunTransaction *stun; + + if (!agent_find_component (agent, pair->stream_id, pair->component_id, + &stream, &component)) +@@ -2718,13 +2773,13 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + + if (uname_len == 0) { + nice_debug ("Agent %p: no credentials found, cancelling conncheck", agent); +- pair->stun_message.buffer = NULL; +- pair->stun_message.buffer_len = 0; + return -1; + } + ++ stun = priv_add_stun_transaction (pair); ++ + buffer_len = stun_usage_ice_conncheck_create (&component->stun_agent, +- &pair->stun_message, pair->stun_buffer, sizeof(pair->stun_buffer), ++ &stun->message, stun->buffer, sizeof(stun->buffer), + uname, uname_len, password, password_len, + cand_use, controlling, pair->prflx_priority, + agent->tie_breaker, +@@ -2732,7 +2787,7 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + agent_to_ice_compatibility (agent)); + + nice_debug ("Agent %p: conncheck created %zd - %p", agent, buffer_len, +- pair->stun_message.buffer); ++ stun->message.buffer); + + if (agent->compatibility == NICE_COMPATIBILITY_MSN || + agent->compatibility == NICE_COMPATIBILITY_OC2007) { +@@ -2741,50 +2796,20 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + + if (buffer_len == 0) { + nice_debug ("Agent %p: buffer is empty, cancelling conncheck", agent); +- pair->stun_message.buffer = NULL; +- pair->stun_message.buffer_len = 0; ++ priv_remove_stun_transaction (pair, stun, component); + return -1; + } + + if (nice_socket_is_reliable(pair->sockptr)) { + timeout = agent->stun_reliable_timeout; +- stun_timer_start_reliable(&pair->timer, timeout); ++ stun_timer_start_reliable(&stun->timer, timeout); + } else { +- StunTimer *timer = &pair->timer; +- +- if (pair->recheck_on_timeout) { +- GTimeVal now; +- /* The pair recheck on timeout can easily cause repetitive rechecks in +- * a ping-pong effect, if both peers with the same behaviour try to +- * check the same pair almost simultaneously, and if the network rtt +- * is greater than the initial timer rto. The reply to the initial +- * stun request may arrive after the in-progress conncheck +- * cancellation (described in RFC 5245, sect 7.2.1.4). Cancellation +- * creates a new stun request, and forgets the initial one. +- * The conncheck timer is restarted with the same initial value, +- * so the same situation happens again later. +- * +- * We choose to avoid resetting the timer in such situation. +- * After enough retransmissions, the timeout delay becomes +- * longer than the rtt, and the stun reply can be handled. +- */ +- +- g_get_current_time (&now); +- timeout = priv_timer_remainder (&pair->next_tick, &now); +- nice_debug("Agent %p : reusing timer of pair %p: %d/%d %d/%dms", +- agent, pair, +- timer->retransmissions, timer->max_retransmissions, +- timer->delay - timeout, +- timer->delay); +- } else { +- timeout = priv_compute_conncheck_timer (agent, stream); +- stun_timer_start (timer, timeout, agent->stun_max_retransmissions); +- } +- pair->recheck_on_timeout = FALSE; ++ timeout = priv_compute_conncheck_timer (agent, stream); ++ stun_timer_start (&stun->timer, timeout, agent->stun_max_retransmissions); + } + +- g_get_current_time (&pair->next_tick); +- g_time_val_add (&pair->next_tick, timeout * 1000); ++ g_get_current_time (&stun->next_tick); ++ g_time_val_add (&stun->next_tick, timeout * 1000); + + /* TCP-ACTIVE candidate must create a new socket before sending + * by connecting to the peer. The new socket is stored in the candidate +@@ -2814,10 +2839,10 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + } + /* send the conncheck */ + agent_socket_send (pair->sockptr, &pair->remote->addr, +- buffer_len, (gchar *)pair->stun_buffer); ++ buffer_len, (gchar *)stun->buffer); + + if (agent->compatibility == NICE_COMPATIBILITY_OC2007R2) +- ms_ice2_legacy_conncheck_send (&pair->stun_message, pair->sockptr, ++ ms_ice2_legacy_conncheck_send (&stun->message, pair->sockptr, + &pair->remote->addr); + + return 0; +@@ -2881,8 +2906,7 @@ static guint priv_prune_pending_checks (NiceAgent *agent, NiceStream *stream, gu + (p->state == NICE_CHECK_WAITING && like_in_progress)) { + if (highest_nominated_priority != 0 && + p->priority < highest_nominated_priority) { +- p->retransmit_on_timeout = FALSE; +- p->recheck_on_timeout = FALSE; ++ p->retransmit = FALSE; + nice_debug ("Agent %p : pair %p will not be retransmitted.", + agent, p); + } else { +@@ -2938,9 +2962,9 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + nice_debug ("Agent %p : Found a matching pair %p (%s) (%s) ...", + agent, p, p->foundation, priv_state_to_string (p->state)); + +- switch (p->state) { +- case NICE_CHECK_WAITING: +- case NICE_CHECK_FROZEN: ++ switch (p->state) { ++ case NICE_CHECK_WAITING: ++ case NICE_CHECK_FROZEN: + nice_debug ("Agent %p : pair %p added for a triggered check.", + agent, p); + priv_add_pair_to_triggered_check_queue (agent, p); +@@ -2952,19 +2976,30 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + * for that pair. The controlling role of this new check may + * be different from the role of this cancelled check. + * +- * note: the flag retransmit_on_timeout unset means that ++ * note: the flag retransmit unset means that + * another pair, with a higher priority is already nominated, + * so there's no reason to recheck this pair, since it can in + * no way replace the nominated one. + */ +- if (!nice_socket_is_reliable (p->sockptr) && +- p->retransmit_on_timeout) { +- nice_debug ("Agent %p : pair %p will be rechecked " +- "on stun timer timeout.", agent, p); +- /* this flag will determine the action at the retransmission +- * timeout of the stun timer ++ if (!nice_socket_is_reliable (p->sockptr) && p->retransmit) { ++ nice_debug ("Agent %p : pair %p added for a triggered check.", ++ agent, p); ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ } ++ break; ++ case NICE_CHECK_FAILED: ++ if (p->retransmit) { ++ nice_debug ("Agent %p : pair %p added for a triggered check.", ++ agent, p); ++ priv_add_pair_to_triggered_check_queue (agent, p); ++ /* If the component for this pair is in failed state, move it ++ * back to connecting, and reinitiate the timers + */ +- p->recheck_on_timeout = TRUE; ++ if (component->state == NICE_COMPONENT_STATE_FAILED) { ++ agent_signal_component_state_change (agent, stream->id, ++ component->id, NICE_COMPONENT_STATE_CONNECTING); ++ conn_check_schedule_next (agent); ++ } + } + break; + case NICE_CHECK_SUCCEEDED: +@@ -2978,32 +3013,6 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + */ + priv_update_check_list_state_for_ready (agent, stream, component); + break; +- case NICE_CHECK_FAILED: +- /* 7.2.1.4 Triggered Checks +- * If the state of the pair is Failed, it is changed to Waiting +- * and the agent MUST create a new connectivity check for that +- * pair (representing a new STUN Binding request transaction), by +- * enqueueing the pair in the triggered check queue. +- * +- * note: the flag retransmit_on_timeout unset means that +- * another pair, with a higher priority is already nominated, +- * we apply the same strategy than with an in-progress pair +- * above. +- */ +- if (p->retransmit_on_timeout) { +- nice_debug ("Agent %p : pair %p added for a triggered check.", +- agent, p); +- priv_add_pair_to_triggered_check_queue (agent, p); +- /* If the component for this pair is in failed state, move it +- * back to connecting, and reinitiate the timers +- */ +- if (component->state == NICE_COMPONENT_STATE_FAILED) { +- agent_signal_component_state_change (agent, stream->id, +- component->id, NICE_COMPONENT_STATE_CONNECTING); +- conn_check_schedule_next (agent); +- } +- } +- break; + default: + break; + } +@@ -3260,16 +3269,8 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + if (new_pair == p) + p->valid = TRUE; + p->state = NICE_CHECK_SUCCEEDED; +- /* note: we cancel the potential in-progress transaction +- * cancellation, caused by sect 7.2.1.4 "Triggered Checks", if +- * we receive a valid reply before transmission timeout... +- */ +- p->recheck_on_timeout = FALSE; +- /* ... or just after the transmission timeout, while the pair is +- * temporarily put on the triggered check list on the way to be +- * be rechecked: we remove it from the list too. +- */ + priv_remove_pair_from_triggered_check_queue (agent, p); ++ priv_free_all_stun_transactions (p, component); + nice_debug ("Agent %p : conncheck %p SUCCEEDED.", agent, p); + nice_component_add_valid_candidate (component, remote_candidate); + } +@@ -3304,8 +3305,8 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + * Succeeded, RFC 5245, 7.1.3.2.3, "Updating Pair States" + */ + p->state = NICE_CHECK_SUCCEEDED; +- p->recheck_on_timeout = FALSE; + priv_remove_pair_from_triggered_check_queue (agent, p); ++ priv_free_all_stun_transactions (p, component); + nice_debug ("Agent %p : conncheck %p SUCCEEDED, %p DISCOVERED.", + agent, p, new_pair); + } +@@ -3331,7 +3332,8 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + struct sockaddr addr; + } sockaddr; + socklen_t socklen = sizeof (sockaddr); +- GSList *i; ++ GSList *i, *j; ++ guint k; + StunUsageIceReturn res; + StunTransactionId discovery_id; + StunTransactionId response_id; +@@ -3340,193 +3342,186 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *p = i->data; + +- if (p->stun_message.buffer == NULL) +- continue; +- +- stun_message_id (&p->stun_message, discovery_id); +- +- if (memcmp (discovery_id, response_id, sizeof(StunTransactionId))) +- continue; +- +- res = stun_usage_ice_conncheck_process (resp, +- &sockaddr.storage, &socklen, +- agent_to_ice_compatibility (agent)); +- nice_debug ("Agent %p : stun_bind_process/conncheck for %p: " +- "%s,res=%s.", +- agent, p, +- agent->controlling_mode ? "controlling" : "controlled", +- priv_ice_return_to_string (res)); +- +- if (res == STUN_USAGE_ICE_RETURN_SUCCESS || +- res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { +- /* case: found a matching connectivity check request */ +- +- CandidateCheckPair *ok_pair = NULL; +- +- nice_debug ("Agent %p : conncheck %p MATCHED.", agent, p); +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; +- +- /* step: verify that response came from the same IP address we +- * sent the original request to (see 7.1.2.1. "Failure +- * Cases") */ +- if (nice_address_equal (from, &p->remote->addr) == FALSE) { +- +- p->state = NICE_CHECK_FAILED; +- if (nice_debug_is_enabled ()) { +- gchar tmpbuf[INET6_ADDRSTRLEN]; +- gchar tmpbuf2[INET6_ADDRSTRLEN]; +- nice_debug ("Agent %p : conncheck %p FAILED" +- " (mismatch of source address).", agent, p); +- nice_address_to_string (&p->remote->addr, tmpbuf); +- nice_address_to_string (from, tmpbuf2); +- nice_debug ("Agent %p : '%s:%u' != '%s:%u'", agent, +- tmpbuf, nice_address_get_port (&p->remote->addr), +- tmpbuf2, nice_address_get_port (from)); +- } +- return TRUE; +- } +- +- /* note: CONNECTED but not yet READY, see docs */ +- +- /* step: handle the possible case of a peer-reflexive +- * candidate where the mapped-address in response does +- * not match any local candidate, see 7.1.2.2.1 +- * "Discovering Peer Reflexive Candidates" ICE ID-19) */ +- +- if (res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { +- p->state = NICE_CHECK_SUCCEEDED; +- p->valid = TRUE; +- nice_debug ("Agent %p : Mapped address not found." +- " conncheck %p SUCCEEDED.", agent, p); +- nice_component_add_valid_candidate (component, p->remote); +- } else +- ok_pair = priv_process_response_check_for_reflexive (agent, +- stream, component, p, sockptr, &sockaddr.addr, +- local_candidate, remote_candidate); +- +- /* note: The success of this check might also +- * cause the state of other checks to change as well, ICE +- * spec 7.1.3.2.3 +- */ +- priv_conn_check_unfreeze_related (agent, stream, p); +- +- /* Note: this assignment helps to reduce the numbers of cases +- * to be tested. If ok_pair and p refer to distinct pairs, it +- * means that ok_pair is a discovered peer reflexive one, +- * caused by the check made on pair p. In that case, the +- * flags to be tested are on p, but the nominated flag will be +- * set on ok_pair. When there's no discovered pair, p and +- * ok_pair refer to the same pair. +- * To summarize : p is a SUCCEEDED pair, ok_pair is a +- * DISCOVERED, VALID, and eventually NOMINATED pair. +- */ +- if (!ok_pair) +- ok_pair = p; +- +- /* step: updating nominated flag (ICE 7.1.2.2.4 "Updating the +- Nominated Flag" (ID-19) */ +- if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { +- nice_debug ("Agent %p : Updating nominated flag (%s): " +- "ok_pair=%p (%d/%d) p=%p (%d/%d) (ucnc/mnora)", +- agent, p->local->transport == NICE_CANDIDATE_TRANSPORT_UDP ? +- "UDP" : "TCP", +- ok_pair, ok_pair->use_candidate_on_next_check, +- ok_pair->mark_nominated_on_response_arrival, +- p, p->use_candidate_on_next_check, +- p->mark_nominated_on_response_arrival); +- +- if (agent->controlling_mode) { +- switch (agent->nomination_mode) { +- case NICE_NOMINATION_MODE_REGULAR: +- if (p->use_candidate_on_next_check) { +- nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(regular nomination, controlling, " +- "use_cand_on_next_check=1).", +- agent, ok_pair, ok_pair->foundation); +- ok_pair->nominated = TRUE; +- } +- break; +- case NICE_NOMINATION_MODE_AGGRESSIVE: +- if (!p->nominated) { +- nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(aggressive nomination, controlling).", +- agent, ok_pair, ok_pair->foundation); +- ok_pair->nominated = TRUE; +- } +- break; +- default: +- /* Nothing to do */ +- break; +- } +- } else { +- if (p->mark_nominated_on_response_arrival) { +- nice_debug ("Agent %p : marking pair %p (%s) as nominated " +- "(%s nomination, controlled, mark_on_response=1).", +- agent, ok_pair, ok_pair->foundation, +- agent->nomination_mode == NICE_NOMINATION_MODE_AGGRESSIVE ? +- "aggressive" : "regular"); +- ok_pair->nominated = TRUE; +- } +- } +- } +- +- if (ok_pair->nominated == TRUE) { +- priv_update_selected_pair (agent, component, ok_pair); +- priv_print_conn_check_lists (agent, G_STRFUNC, +- ", got a nominated pair"); ++ for (j = p->stun_transactions, k = 0; j; j = j->next, k++) { ++ StunTransaction *stun = j->data; ++ ++ stun_message_id (&stun->message, discovery_id); ++ ++ if (memcmp (discovery_id, response_id, sizeof(StunTransactionId))) ++ continue; ++ ++ res = stun_usage_ice_conncheck_process (resp, ++ &sockaddr.storage, &socklen, ++ agent_to_ice_compatibility (agent)); ++ nice_debug ("Agent %p : stun_bind_process/conncheck for %p: " ++ "%s,res=%s,stun#=%d.", ++ agent, p, ++ agent->controlling_mode ? "controlling" : "controlled", ++ priv_ice_return_to_string (res), k); ++ ++ if (res == STUN_USAGE_ICE_RETURN_SUCCESS || ++ res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { ++ /* case: found a matching connectivity check request */ ++ ++ CandidateCheckPair *ok_pair = NULL; ++ ++ nice_debug ("Agent %p : conncheck %p MATCHED.", agent, p); ++ priv_remove_stun_transaction (p, stun, component); ++ ++ /* step: verify that response came from the same IP address we ++ * sent the original request to (see 7.1.2.1. "Failure ++ * Cases") */ ++ if (nice_address_equal (from, &p->remote->addr) == FALSE) { ++ candidate_check_pair_fail (stream, agent, p); ++ if (nice_debug_is_enabled ()) { ++ gchar tmpbuf[INET6_ADDRSTRLEN]; ++ gchar tmpbuf2[INET6_ADDRSTRLEN]; ++ nice_debug ("Agent %p : conncheck %p FAILED" ++ " (mismatch of source address).", agent, p); ++ nice_address_to_string (&p->remote->addr, tmpbuf); ++ nice_address_to_string (from, tmpbuf2); ++ nice_debug ("Agent %p : '%s:%u' != '%s:%u'", agent, ++ tmpbuf, nice_address_get_port (&p->remote->addr), ++ tmpbuf2, nice_address_get_port (from)); ++ } ++ return TRUE; ++ } + +- /* Do not step down to CONNECTED if we're already at state READY*/ +- if (component->state != NICE_COMPONENT_STATE_READY) +- /* step: notify the client of a new component state (must be done +- * before the possible check list state update step */ +- agent_signal_component_state_change (agent, +- stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); +- } ++ /* note: CONNECTED but not yet READY, see docs */ ++ ++ /* step: handle the possible case of a peer-reflexive ++ * candidate where the mapped-address in response does ++ * not match any local candidate, see 7.1.2.2.1 ++ * "Discovering Peer Reflexive Candidates" ICE ID-19) */ ++ ++ if (res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { ++ p->state = NICE_CHECK_SUCCEEDED; ++ p->valid = TRUE; ++ nice_debug ("Agent %p : Mapped address not found." ++ " conncheck %p SUCCEEDED.", agent, p); ++ nice_component_add_valid_candidate (component, p->remote); ++ } else ++ ok_pair = priv_process_response_check_for_reflexive (agent, ++ stream, component, p, sockptr, &sockaddr.addr, ++ local_candidate, remote_candidate); ++ ++ /* note: The success of this check might also ++ * cause the state of other checks to change as well, ICE ++ * spec 7.1.3.2.3 ++ */ ++ priv_conn_check_unfreeze_related (agent, stream, p); ++ ++ /* Note: this assignment helps to reduce the numbers of cases ++ * to be tested. If ok_pair and p refer to distinct pairs, it ++ * means that ok_pair is a discovered peer reflexive one, ++ * caused by the check made on pair p. In that case, the ++ * flags to be tested are on p, but the nominated flag will be ++ * set on ok_pair. When there's no discovered pair, p and ++ * ok_pair refer to the same pair. ++ * To summarize : p is a SUCCEEDED pair, ok_pair is a ++ * DISCOVERED, VALID, and eventually NOMINATED pair. ++ */ ++ if (!ok_pair) ++ ok_pair = p; ++ ++ /* step: updating nominated flag (ICE 7.1.2.2.4 "Updating the ++ Nominated Flag" (ID-19) */ ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ nice_debug ("Agent %p : Updating nominated flag (%s): " ++ "ok_pair=%p (%d/%d) p=%p (%d/%d) (ucnc/mnora)", ++ agent, p->local->transport == NICE_CANDIDATE_TRANSPORT_UDP ? ++ "UDP" : "TCP", ++ ok_pair, ok_pair->use_candidate_on_next_check, ++ ok_pair->mark_nominated_on_response_arrival, ++ p, p->use_candidate_on_next_check, ++ p->mark_nominated_on_response_arrival); ++ ++ if (agent->controlling_mode) { ++ switch (agent->nomination_mode) { ++ case NICE_NOMINATION_MODE_REGULAR: ++ if (p->use_candidate_on_next_check) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(regular nomination, controlling, " ++ "use_cand_on_next_check=1).", ++ agent, ok_pair, ok_pair->foundation); ++ ok_pair->nominated = TRUE; ++ } ++ break; ++ case NICE_NOMINATION_MODE_AGGRESSIVE: ++ if (!p->nominated) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(aggressive nomination, controlling).", ++ agent, ok_pair, ok_pair->foundation); ++ ok_pair->nominated = TRUE; ++ } ++ break; ++ default: ++ /* Nothing to do */ ++ break; ++ } ++ } else { ++ if (p->mark_nominated_on_response_arrival) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated " ++ "(%s nomination, controlled, mark_on_response=1).", ++ agent, ok_pair, ok_pair->foundation, ++ agent->nomination_mode == NICE_NOMINATION_MODE_AGGRESSIVE ? ++ "aggressive" : "regular"); ++ ok_pair->nominated = TRUE; ++ } ++ } ++ } + +- /* step: update pair states (ICE 7.1.2.2.3 "Updating pair +- states" and 8.1.2 "Updating States", ID-19) */ +- priv_update_check_list_state_for_ready (agent, stream, component); +- } else if (res == STUN_USAGE_ICE_RETURN_ROLE_CONFLICT) { +- /* case: role conflict error, need to restart with new role */ +- nice_debug ("Agent %p : conncheck %p ROLE CONFLICT, restarting", agent, p); +- +- /* note: this res value indicates that the role of the peer +- * agent has not changed after the tie-breaker comparison, so +- * this is our role that must change. see ICE sect. 7.1.3.1 +- * "Failure Cases". Our role might already have changed due to +- * an earlier incoming request, but if not, change role now. +- * +- * Sect. 7.1.3.1 is not clear on this point, but we choose to +- * put the candidate pair in the triggered check list even +- * when the agent did not switch its role. The reason for this +- * interpretation is that the reception of the stun reply, even +- * an error reply, is a good sign that this pair will be +- * valid, if we retry the check after the role of both peers +- * has been fixed. +- */ ++ if (ok_pair->nominated == TRUE) { ++ priv_update_selected_pair (agent, component, ok_pair); ++ priv_print_conn_check_lists (agent, G_STRFUNC, ++ ", got a nominated pair"); ++ ++ /* Do not step down to CONNECTED if we're already at state READY*/ ++ if (component->state != NICE_COMPONENT_STATE_READY) ++ /* step: notify the client of a new component state (must be done ++ * before the possible check list state update step */ ++ agent_signal_component_state_change (agent, ++ stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); ++ } + +- if (p->stun_message.buffer != NULL) { ++ /* step: update pair states (ICE 7.1.2.2.3 "Updating pair ++ states" and 8.1.2 "Updating States", ID-19) */ ++ priv_update_check_list_state_for_ready (agent, stream, component); ++ } else if (res == STUN_USAGE_ICE_RETURN_ROLE_CONFLICT) { + guint64 tie; + gboolean controlled_mode; + +- controlled_mode = (stun_message_find64 (&p->stun_message, ++ /* case: role conflict error, need to restart with new role */ ++ nice_debug ("Agent %p : conncheck %p ROLE CONFLICT, restarting", agent, p); ++ ++ /* note: this res value indicates that the role of the peer ++ * agent has not changed after the tie-breaker comparison, so ++ * this is our role that must change. see ICE sect. 7.1.3.1 ++ * "Failure Cases". Our role might already have changed due to ++ * an earlier incoming request, but if not, change role now. ++ * ++ * Sect. 7.1.3.1 is not clear on this point, but we choose to ++ * put the candidate pair in the triggered check list even ++ * when the agent did not switch its role. The reason for this ++ * interpretation is that the reception of the stun reply, even ++ * an error reply, is a good sign that this pair will be ++ * valid, if we retry the check after the role of both peers ++ * has been fixed. ++ */ ++ controlled_mode = (stun_message_find64 (&stun->message, + STUN_ATTRIBUTE_ICE_CONTROLLED, &tie) == + STUN_MESSAGE_RETURN_SUCCESS); + + priv_check_for_role_conflict (agent, controlled_mode); +- +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; ++ priv_remove_stun_transaction (p, stun, component); + priv_add_pair_to_triggered_check_queue (agent, p); ++ } else { ++ /* case: STUN error, the check STUN context was freed */ ++ nice_debug ("Agent %p : conncheck %p FAILED.", agent, p); ++ candidate_check_pair_fail (stream, agent, p); + } +- } else { +- /* case: STUN error, the check STUN context was freed */ +- nice_debug ("Agent %p : conncheck %p FAILED.", agent, p); +- p->stun_message.buffer = NULL; +- p->stun_message.buffer_len = 0; ++ return TRUE; + } +- return TRUE; + } + + return FALSE; +diff --git a/agent/conncheck.h b/agent/conncheck.h +index 909d469..e16dc67 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -71,6 +71,15 @@ typedef enum + } NiceCheckState; + + typedef struct _CandidateCheckPair CandidateCheckPair; ++typedef struct _StunTransaction StunTransaction; ++ ++struct _StunTransaction ++{ ++ GTimeVal next_tick; /* next tick timestamp */ ++ StunTimer timer; ++ uint8_t buffer[STUN_MAX_MESSAGE_SIZE_IPV6]; ++ StunMessage message; ++}; + + struct _CandidateCheckPair + { +@@ -86,16 +95,12 @@ struct _CandidateCheckPair + gboolean valid; + gboolean use_candidate_on_next_check; + gboolean mark_nominated_on_response_arrival; +- gboolean recheck_on_timeout; +- gboolean retransmit_on_timeout; +- struct _CandidateCheckPair *discovered_pair; +- struct _CandidateCheckPair *succeeded_pair; ++ gboolean retransmit; /* if the first stun request must be retransmitted */ ++ CandidateCheckPair *discovered_pair; ++ CandidateCheckPair *succeeded_pair; + guint64 priority; + guint32 prflx_priority; +- GTimeVal next_tick; /* next tick timestamp */ +- StunTimer timer; +- uint8_t stun_buffer[STUN_MAX_MESSAGE_SIZE_IPV6]; +- StunMessage stun_message; ++ GSList *stun_transactions; /* a list of ongoing stun requests */ + }; + + int conn_check_add_for_candidate (NiceAgent *agent, guint stream_id, NiceComponent *component, NiceCandidate *remote); +-- +2.13.6 + + +From 6fe64fdbc53ab87dffd79972f492665cff14c0a0 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 27 Jun 2017 11:01:14 +0200 +Subject: [PATCH 59/70] conncheck: update the state of triggered checks pairs + +With this patch, we fix an ambiguity of some parts of the spec, when +the document refers to in-progress pairs, that also concern pairs in +the triggered checks list. + +The first cast is in section 7.1.2.5, "Updating the Nominated Flag", +when the in-progress pair will be nominated on response arrival. This is +handled in function priv_mark_pair_nominated(), when a pair is put to +the triggered check list in reaction to a matching inbound stun request. +Such a pair in priv_mark_pair_nominated() will _always_ be in the +triggered check list, from the previously called function +priv_schedule_triggered_check(). + +The second case is in section 8.1.2, "Updating State" when an in-progress +pair stops its retransmission when another pair of higher priority is +already nominated. This is handled by function priv_prune_pending_checks(). + +Until now, pairs enqueued in the triggered check list move transiently +to state waiting, according to 7.2.1.4. But this state causes wrong +decisions in the two previous cases, because such pairs should in fact +rather be considered "like in-progress", to avoid discarding them +inadvertantly. + +This patch update the state of the triggered check list +pairs to in-progress. It allows to remove exception handling cited +above: the code is a bit more simple, and allows some refactoring +in priv_mark_pair_nominated() between RFC and compatibility modes. + +Differential Revision: https://phabricator.freedesktop.org/D1762 +--- + agent/conncheck.c | 96 +++++++++++++++---------------------------------------- + 1 file changed, 25 insertions(+), 71 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 2a85738..628c708 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -244,16 +244,6 @@ priv_print_conn_check_lists (NiceAgent *agent, const gchar *where, const gchar * + } + } + +-/* Verify if the pair is in the triggered checks list +- */ +- +-static gboolean +-priv_is_pair_in_triggered_check_queue (NiceAgent *agent, CandidateCheckPair *pair) +-{ +- g_assert (pair); +- return (g_slist_find (agent->triggered_check_queue, pair) != NULL); +-} +- + /* Add the pair to the triggered checks list, if not already present + */ + static void +@@ -261,8 +251,8 @@ priv_add_pair_to_triggered_check_queue (NiceAgent *agent, CandidateCheckPair *pa + { + g_assert (pair); + +- pair->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, pair); ++ pair->state = NICE_CHECK_IN_PROGRESS; ++ nice_debug ("Agent %p : pair %p state IN_PROGRESS", agent, pair); + if (agent->triggered_check_queue == NULL || + g_slist_find (agent->triggered_check_queue, pair) == NULL) + agent->triggered_check_queue = g_slist_append (agent->triggered_check_queue, pair); +@@ -841,12 +831,6 @@ timer_return_timeout: + */ + pair = priv_conn_check_find_next_waiting (stream->conncheck_list); + if (pair) { +- /* remove the pair from the triggered check list if needed. This +- * may happen with the cancelled pair, that's just been added +- * in state waiting to the triggered check list above in the +- * same function. +- */ +- priv_remove_pair_from_triggered_check_queue (agent, pair); + priv_print_conn_check_lists (agent, G_STRFUNC, + ", got a pair in Waiting state"); + priv_conn_check_initiate (agent, pair); +@@ -1109,7 +1093,7 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + if (pair) { + priv_print_conn_check_lists (agent, G_STRFUNC, + ", got a pair from triggered check list"); +- priv_conn_check_initiate (agent, pair); ++ conn_check_send (agent, pair); + return TRUE; + } + +@@ -2098,8 +2082,7 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + /* step: search for at least one nominated pair */ + for (i = stream->conncheck_list; i; i = i->next) { + CandidateCheckPair *pair = i->data; +- if (pair->local == localcand && pair->remote == remotecand && +- NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ if (pair->local == localcand && pair->remote == remotecand) { + /* ICE, 7.2.1.5. Updating the Nominated Flag */ + /* note: TCP candidates typically produce peer reflexive + * candidate, generating a "discovered" pair that can be +@@ -2111,44 +2094,27 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + g_assert (pair->state == NICE_CHECK_DISCOVERED); + } + +- if (pair->valid) { +- nice_debug ("Agent %p : marking pair %p (%s) as nominated", +- agent, pair, pair->foundation); +- pair->nominated = TRUE; +- priv_update_selected_pair (agent, component, pair); +- /* Do not step down to CONNECTED if we're already at state READY*/ +- if (component->state == NICE_COMPONENT_STATE_FAILED) +- agent_signal_component_state_change (agent, +- stream->id, component->id, NICE_COMPONENT_STATE_CONNECTING); +- if (component->state == NICE_COMPONENT_STATE_CONNECTING) +- /* step: notify the client of a new component state (must be done +- * before the possible check list state update step */ +- agent_signal_component_state_change (agent, +- stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); +- priv_update_check_list_state_for_ready (agent, stream, component); +- } else if (pair->state == NICE_CHECK_IN_PROGRESS) { ++ /* If the state of this pair is In-Progress, [...] the resulting ++ * valid pair has its nominated flag set when the response ++ * arrives. ++ */ ++ if (NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent) && ++ pair->state == NICE_CHECK_IN_PROGRESS) { + pair->mark_nominated_on_response_arrival = TRUE; + nice_debug ("Agent %p : pair %p (%s) is in-progress, " + "will be nominated on response receipt.", + agent, pair, pair->foundation); + } +- /* note: this case is not covered by the ICE spec, 7.2.1.5, +- * "Updating the Nominated Flag", but a pair in waiting state +- * deserves the same treatment than a pair in-progress. A pair +- * can be in waiting state as the result of being enqueued in +- * the triggered check list for example. +- */ +- if (pair->state == NICE_CHECK_WAITING) { +- pair->mark_nominated_on_response_arrival = TRUE; +- nice_debug ("Agent %p : pair %p (%s) is waiting, " +- "will be nominated on response receipt.", ++ ++ if (pair->valid || ++ !NICE_AGENT_IS_COMPATIBLE_WITH_RFC5245_OR_OC2007R2 (agent)) { ++ nice_debug ("Agent %p : marking pair %p (%s) as nominated", + agent, pair, pair->foundation); ++ pair->nominated = TRUE; + } +- } else if (pair->local == localcand && pair->remote == remotecand) { +- nice_debug ("Agent %p : marking pair %p (%s) as nominated", agent, pair, pair->foundation); +- pair->nominated = TRUE; ++ + if (pair->valid) { +- priv_update_selected_pair (agent, component, pair); ++ priv_update_selected_pair (agent, component, pair); + /* Do not step down to CONNECTED if we're already at state READY*/ + if (component->state == NICE_COMPONENT_STATE_FAILED) + agent_signal_component_state_change (agent, +@@ -2159,7 +2125,9 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + agent_signal_component_state_change (agent, + stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED); + } +- priv_update_check_list_state_for_ready (agent, stream, component); ++ ++ if (pair->nominated) ++ priv_update_check_list_state_for_ready (agent, stream, component); + } + } + } +@@ -2731,12 +2699,12 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + nice_address_to_string (&pair->local->addr, tmpbuf1); + nice_address_to_string (&pair->remote->addr, tmpbuf2); + nice_debug ("Agent %p : STUN-CC REQ [%s]:%u --> [%s]:%u, socket=%u, " +- "pair=%s (c-id:%u), tie=%llu, username='%.*s' (%" G_GSIZE_FORMAT "), " ++ "pair=%p (c-id:%u), tie=%llu, username='%.*s' (%" G_GSIZE_FORMAT "), " + "password='%.*s' (%" G_GSIZE_FORMAT "), prio=%u, %s.", agent, + tmpbuf1, nice_address_get_port (&pair->local->addr), + tmpbuf2, nice_address_get_port (&pair->remote->addr), + pair->sockptr->fileno ? g_socket_get_fd(pair->sockptr->fileno) : -1, +- pair->foundation, pair->component_id, ++ pair, pair->component_id, + (unsigned long long)agent->tie_breaker, + (int) uname_len, uname, uname_len, + (int) password_len, password, password_len, +@@ -2877,35 +2845,21 @@ static guint priv_prune_pending_checks (NiceAgent *agent, NiceStream *stream, gu + "is %" G_GUINT64_FORMAT, agent, highest_nominated_priority); + + /* step: cancel all FROZEN and WAITING pairs for the component */ +- /* note: this case is not covered by the ICE spec, 8.1.2 +- * "Updating States", but a pair in waiting state which will be +- * nominated on response receipt should be treated the same way +- * that an in-progress pair. A pair in waiting state and in +- * the triggered check list should also be treated like an in-progress +- * pair. +- */ + i = stream->conncheck_list; + while (i) { + CandidateCheckPair *p = i->data; + GSList *next = i->next; + + if (p->component_id == component_id) { +- gboolean like_in_progress = +- p->mark_nominated_on_response_arrival || +- priv_is_pair_in_triggered_check_queue (agent, p); +- +- if (p->state == NICE_CHECK_FROZEN || +- (p->state == NICE_CHECK_WAITING && !like_in_progress)) { ++ if (p->state == NICE_CHECK_FROZEN || p->state == NICE_CHECK_WAITING) { + nice_debug ("Agent %p : pair %p removed.", agent, p); + conn_check_free_item (p); + stream->conncheck_list = g_slist_delete_link(stream->conncheck_list, i); + } + + /* note: a SHOULD level req. in ICE 8.1.2. "Updating States" (ID-19) */ +- else if (p->state == NICE_CHECK_IN_PROGRESS || +- (p->state == NICE_CHECK_WAITING && like_in_progress)) { +- if (highest_nominated_priority != 0 && +- p->priority < highest_nominated_priority) { ++ else if (p->state == NICE_CHECK_IN_PROGRESS) { ++ if (p->priority < highest_nominated_priority) { + p->retransmit = FALSE; + nice_debug ("Agent %p : pair %p will not be retransmitted.", + agent, p); +-- +2.13.6 + + +From 72dd26a3368d3506fe8faca7067a02784fb5f0fd Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Wed, 28 Jun 2017 12:06:48 +0200 +Subject: [PATCH 60/70] conncheck: forgot to put a pair in triggered check list + +When a new pair is created from an unknown remote candidate, it +should be enqueue for a triggered check, to allow it to be marked +as nominated on response arrival in priv_mark_pair_nominated(). +Creating it in waiting state is not sufficient since the update +in priv_mark_pair_nominated() from previous commits. + +Differential Revision: https://phabricator.freedesktop.org/D1763 +--- + agent/conncheck.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 628c708..0e3ce88 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -2893,11 +2893,12 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + { + GSList *i; + NiceCandidate *local = NULL; ++ CandidateCheckPair *p; + + g_assert (remote_cand != NULL); + + for (i = stream->conncheck_list; i ; i = i->next) { +- CandidateCheckPair *p = i->data; ++ p = i->data; + if (p->component_id == component->id && + p->remote == remote_cand && + ((p->local->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE && +@@ -2986,8 +2987,9 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + + if (i) { + nice_debug ("Agent %p : Adding a triggered check to conn.check list (local=%p).", agent, local); +- priv_add_new_check_pair (agent, stream->id, component, ++ p = priv_add_new_check_pair (agent, stream->id, component, + local, remote_cand, NICE_CHECK_WAITING); ++ priv_add_pair_to_triggered_check_queue (agent, p); + return TRUE; + } + else { +-- +2.13.6 + + +From 14102d44449d2eb4148588ce54fa897fa13b87ad Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 2 Jul 2017 16:02:09 +0200 +Subject: [PATCH 61/70] conncheck: change state before updating nominated pairs + +When a pair is nominated while in state failed, we first move +back to state connecting, then we update the selected pair, and +finally we move to state connected. +--- + agent/conncheck.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 0e3ce88..e584c0e 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -2114,11 +2114,11 @@ static void priv_mark_pair_nominated (NiceAgent *agent, NiceStream *stream, Nice + } + + if (pair->valid) { +- priv_update_selected_pair (agent, component, pair); + /* Do not step down to CONNECTED if we're already at state READY*/ + if (component->state == NICE_COMPONENT_STATE_FAILED) + agent_signal_component_state_change (agent, + stream->id, component->id, NICE_COMPONENT_STATE_CONNECTING); ++ priv_update_selected_pair (agent, component, pair); + if (component->state == NICE_COMPONENT_STATE_CONNECTING) + /* step: notify the client of a new component state (must be done + * before the possible check list state update step */ +-- +2.13.6 + + +From 1a1803a45778000720c93d91060cedeb19124a27 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 12 Sep 2017 13:23:31 +0100 +Subject: [PATCH 62/70] tests: Fix copyright dates in test-gstreamer.c + +This code is not 1000 years old. + +Signed-off-by: Philip Withnall +--- + tests/test-gstreamer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test-gstreamer.c b/tests/test-gstreamer.c +index 74d7133..a0be68e 100644 +--- a/tests/test-gstreamer.c ++++ b/tests/test-gstreamer.c +@@ -1,7 +1,7 @@ + /* + * This file is part of the Nice GLib ICE library. + * +- * (C) 1015 Kurento. ++ * (C) 2015 Kurento. + * Contact: Jose Antonio Santos Cadenas + * + * The contents of this file are subject to the Mozilla Public License Version +-- +2.13.6 + + +From 4c4834ab634f735145c8f758a22cbdd9cab79bac Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 12 Sep 2017 13:23:53 +0100 +Subject: [PATCH 63/70] tests: Fix agent.h header inclusion in test-gstreamer.c + +Spotted by Lukas Gradl on the mailing list. + +Signed-off-by: Philip Withnall +--- + tests/test-gstreamer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test-gstreamer.c b/tests/test-gstreamer.c +index a0be68e..f060efc 100644 +--- a/tests/test-gstreamer.c ++++ b/tests/test-gstreamer.c +@@ -34,7 +34,7 @@ + */ + + #include +-#include ++#include "agent.h" + + #define RTP_HEADER_SIZE 12 + #define RTP_PAYLOAD_SIZE 1024 +-- +2.13.6 + + +From fbdccf0c2787ebdc65fe13ac64bd25c829ea7972 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Thu, 3 Aug 2017 12:20:32 +0100 +Subject: [PATCH 64/70] stun: Fix FD leak in test/utility code +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +https://phabricator.freedesktop.org/T7798 + +Signed-off-by: Philip Withnall +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1819 +--- + stun/usages/bind.c | 29 ++++++++++++++++++++++------- + 1 file changed, 22 insertions(+), 7 deletions(-) + +diff --git a/stun/usages/bind.c b/stun/usages/bind.c +index d56790f..ee600a0 100644 +--- a/stun/usages/bind.c ++++ b/stun/usages/bind.c +@@ -491,13 +491,15 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, + ret = stun_trans_create (&trans, SOCK_DGRAM, 0, srv, srvlen); + if (ret != STUN_USAGE_TRANS_RETURN_SUCCESS) { + stun_debug ("STUN transaction failed: couldn't create transport."); +- return STUN_USAGE_BIND_RETURN_ERROR; ++ bind_ret = STUN_USAGE_BIND_RETURN_ERROR; ++ goto done; + } + + val = stun_trans_send (&trans, req_buf, len); + if (val < -1) { + stun_debug ("STUN transaction failed: couldn't send request."); +- return STUN_USAGE_BIND_RETURN_ERROR; ++ bind_ret = STUN_USAGE_BIND_RETURN_ERROR; ++ goto done; + } + + stun_timer_start (&timer, STUN_TIMER_DEFAULT_TIMEOUT, +@@ -514,14 +516,16 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, + switch (stun_timer_refresh (&timer)) { + case STUN_USAGE_TIMER_RETURN_TIMEOUT: + stun_debug ("STUN transaction failed: time out."); +- return STUN_USAGE_BIND_RETURN_TIMEOUT; // fatal error! ++ bind_ret = STUN_USAGE_BIND_RETURN_TIMEOUT; // fatal error! ++ goto done; + case STUN_USAGE_TIMER_RETURN_RETRANSMIT: + stun_debug ("STUN transaction retransmitted (timeout %dms).", + stun_timer_remainder (&timer)); + val = stun_trans_send (&trans, req_buf, len); + if (val < -1) { + stun_debug ("STUN transaction failed: couldn't resend request."); +- return STUN_USAGE_BIND_RETURN_ERROR; ++ bind_ret = STUN_USAGE_BIND_RETURN_ERROR; ++ goto done; + } + continue; + case STUN_USAGE_TIMER_RETURN_SUCCESS: +@@ -538,7 +542,10 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, + + valid = stun_agent_validate (&agent, &msg, buf, val, NULL, NULL); + if (valid == STUN_VALIDATION_UNKNOWN_ATTRIBUTE) +- return STUN_USAGE_BIND_RETURN_ERROR; ++ { ++ bind_ret = STUN_USAGE_BIND_RETURN_ERROR; ++ goto done; ++ } + + if (valid != STUN_VALIDATION_SUCCESS) { + ret = STUN_USAGE_TRANS_RETURN_RETRY; +@@ -554,12 +561,16 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, + (struct sockaddr *) &alternate_server, alternate_server_len); + + if (ret != STUN_USAGE_TRANS_RETURN_SUCCESS) { +- return STUN_USAGE_BIND_RETURN_ERROR; ++ bind_ret = STUN_USAGE_BIND_RETURN_ERROR; ++ goto done; + } + + val = stun_trans_send (&trans, req_buf, len); + if (val < -1) +- return STUN_USAGE_BIND_RETURN_ERROR; ++ { ++ bind_ret = STUN_USAGE_BIND_RETURN_ERROR; ++ goto done; ++ } + + stun_timer_start (&timer, STUN_TIMER_DEFAULT_TIMEOUT, + STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS); +@@ -573,5 +584,9 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, + } + while (ret == STUN_USAGE_TRANS_RETURN_RETRY); + ++done: ++ if (trans.fd != -1) ++ stun_trans_deinit (&trans); ++ + return bind_ret; + } +-- +2.13.6 + + +From 02216a6766caccb652387d5ee19686149eedbc93 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Tue, 21 Nov 2017 15:12:45 +0100 +Subject: [PATCH 65/70] agent: prevent external role change while conncheck is + running + +With this patch, we stash the controlling mode property change, and +apply it safely, when it won't interfere with an ongoing conncheck +running. According to RFC5245, sect 5.2. "Determining Role", the role +is determined for a session, and persists unless an ICE is restarted. + +Differential Revision: https://phabricator.freedesktop.org/D1887 +--- + agent/agent-priv.h | 4 +++- + agent/agent.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++-- + tests/test-restart.c | 15 ++++++++++++++ + 3 files changed, 74 insertions(+), 3 deletions(-) + +diff --git a/agent/agent-priv.h b/agent/agent-priv.h +index 714ecff..7269be0 100644 +--- a/agent/agent-priv.h ++++ b/agent/agent-priv.h +@@ -146,7 +146,7 @@ struct _NiceAgent + NiceProxyType proxy_type; /* property: Proxy type */ + gchar *proxy_username; /* property: Proxy username */ + gchar *proxy_password; /* property: Proxy password */ +- gboolean controlling_mode; /* property: controlling-mode */ ++ gboolean saved_controlling_mode;/* property: controlling-mode */ + guint timer_ta; /* property: timer Ta */ + guint max_conn_checks; /* property: max connectivity checks */ + gboolean force_relay; /* property: force relay */ +@@ -190,6 +190,8 @@ struct _NiceAgent + gboolean use_ice_tcp; + + guint conncheck_timer_grace_period; /* ongoing delay before timer stop */ ++ gboolean controlling_mode; /* controlling mode used by the ++ conncheck */ + /* XXX: add pointer to internal data struct for ABI-safe extensions */ + }; + +diff --git a/agent/agent.c b/agent/agent.c +index a4dcc0c..0773c53 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -405,6 +405,13 @@ nice_agent_class_init (NiceAgentClass *klass) + 1, /* not a construct property, ignored */ + G_PARAM_READWRITE)); + ++ /** ++ * NiceAgent:controlling-mode: ++ * ++ * Whether the agent has the controlling role. This property should ++ * be modified before gathering candidates, any modification occuring ++ * later will be hold until ICE is restarted. ++ */ + g_object_class_install_property (gobject_class, PROP_CONTROLLING_MODE, + g_param_spec_boolean ( + "controlling-mode", +@@ -1107,6 +1114,47 @@ static void priv_generate_tie_breaker (NiceAgent *agent) + } + + static void ++priv_update_controlling_mode (NiceAgent *agent, gboolean value) ++{ ++ gboolean update_controlling_mode; ++ GSList *i, *j; ++ ++ agent->saved_controlling_mode = value; ++ /* It is safe to update the agent controlling mode when all ++ * components are still in state disconnected. When we leave ++ * this state, the role must stay under the control of the ++ * conncheck algorithm exclusively, until the conncheck is ++ * eventually restarted. See RFC5245, sect 5.2. Determining Role ++ */ ++ if (agent->controlling_mode != agent->saved_controlling_mode) { ++ update_controlling_mode = TRUE; ++ for (i = agent->streams; ++ i && update_controlling_mode; i = i->next) { ++ NiceStream *stream = i->data; ++ for (j = stream->components; ++ j && update_controlling_mode; j = j->next) { ++ NiceComponent *component = j->data; ++ if (component->state > NICE_COMPONENT_STATE_DISCONNECTED) ++ update_controlling_mode = FALSE; ++ } ++ } ++ if (update_controlling_mode) { ++ agent->controlling_mode = agent->saved_controlling_mode; ++ nice_debug ("Agent %p : Property set, changing role to \"%s\".", ++ agent, agent->controlling_mode ? "controlling" : "controlled"); ++ } else { ++ nice_debug ("Agent %p : Property set, role switch requested " ++ "but conncheck already started.", agent); ++ nice_debug ("Agent %p : Property set, staying with role \"%s\" " ++ "until restart.", agent, ++ agent->controlling_mode ? "controlling" : "controlled"); ++ } ++ } else ++ nice_debug ("Agent %p : Property set, role is already \"%s\".", agent, ++ agent->controlling_mode ? "controlling" : "controlled"); ++} ++ ++static void + nice_agent_init (NiceAgent *agent) + { + agent->next_candidate_id = 1; +@@ -1115,6 +1163,7 @@ nice_agent_init (NiceAgent *agent) + /* set defaults; not construct params, so set here */ + agent->stun_server_port = DEFAULT_STUN_PORT; + agent->controlling_mode = TRUE; ++ agent->saved_controlling_mode = TRUE; + agent->max_conn_checks = NICE_AGENT_MAX_CONNECTIVITY_CHECKS_DEFAULT; + agent->nomination_mode = NICE_NOMINATION_MODE_AGGRESSIVE; + +@@ -1213,7 +1262,7 @@ nice_agent_get_property ( + break; + + case PROP_CONTROLLING_MODE: +- g_value_set_boolean (value, agent->controlling_mode); ++ g_value_set_boolean (value, agent->saved_controlling_mode); + break; + + case PROP_FULL_MODE: +@@ -1422,7 +1471,7 @@ nice_agent_set_property ( + break; + + case PROP_CONTROLLING_MODE: +- agent->controlling_mode = g_value_get_boolean (value); ++ priv_update_controlling_mode (agent, g_value_get_boolean (value)); + break; + + case PROP_FULL_MODE: +@@ -4930,6 +4979,11 @@ nice_agent_restart ( + /* step: regenerate tie-breaker value */ + priv_generate_tie_breaker (agent); + ++ /* step: reset controlling mode from the property value */ ++ agent->controlling_mode = agent->saved_controlling_mode; ++ nice_debug ("Agent %p : ICE restart, reset role to \"%s\".", ++ agent, agent->controlling_mode ? "controlling" : "controlled"); ++ + for (i = agent->streams; i; i = i->next) { + NiceStream *stream = i->data; + +diff --git a/tests/test-restart.c b/tests/test-restart.c +index c2cbe9a..afc51b6 100644 +--- a/tests/test-restart.c ++++ b/tests/test-restart.c +@@ -301,6 +301,11 @@ static int run_restart_test (NiceAgent *lagent, NiceAgent *ragent, NiceAddress * + nice_agent_set_remote_candidates (lagent, ls_id, NICE_COMPONENT_TYPE_RTCP, cands); + cdes.addr = laddr_rtcp; + nice_agent_set_remote_candidates (ragent, rs_id, NICE_COMPONENT_TYPE_RTCP, cands); ++ /* This role switch request will be effective after restart. We test ++ * here that the role cannot be externally modified after conncheck ++ * has started. */ ++ g_object_set (G_OBJECT (ragent), "controlling-mode", TRUE, NULL); ++ g_assert (ragent->controlling_mode == FALSE); + + g_debug ("test-restart: Set properties, next running mainloop until connectivity checks succeed..."); + +@@ -329,10 +334,18 @@ static int run_restart_test (NiceAgent *lagent, NiceAgent *ragent, NiceAddress * + global_ragent_read = 0; + g_assert (nice_agent_send (lagent, ls_id, 1, 16, "1234567812345678") == 16); + ++ /* Both agent have a distinct role at the end of the conncheck */ ++ g_assert (lagent->controlling_mode == TRUE); ++ g_assert (ragent->controlling_mode == FALSE); + /* step: restart agents, exchange updated credentials */ + tie_breaker = ragent->tie_breaker; + nice_agent_restart (ragent); + g_assert (tie_breaker != ragent->tie_breaker); ++ /* This role switch of ragent should be done now, and both agents ++ * have now the same role, which should generate a role conflict ++ * resolution situation */ ++ g_assert (lagent->controlling_mode == TRUE); ++ g_assert (ragent->controlling_mode == TRUE); + nice_agent_restart (lagent); + { + gchar *ufrag = NULL, *password = NULL; +@@ -375,6 +388,8 @@ static int run_restart_test (NiceAgent *lagent, NiceAgent *ragent, NiceAddress * + /* note: verify binding requests were resent after restart */ + g_assert (global_lagent_ibr_received == TRUE); + g_assert (global_ragent_ibr_received == TRUE); ++ /* note: verify that a role switch occured for one of the agents */ ++ g_assert (ragent->controlling_mode != lagent->controlling_mode); + + g_debug ("test-restart: Ran mainloop, removing streams..."); + +-- +2.13.6 + + +From c63349894b3fe974494453a883dfb5ad05df5a46 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Thu, 23 Nov 2017 18:31:31 +0100 +Subject: [PATCH 66/70] Makefile: really enable debug for tests + +Differential Revision: https://phabricator.freedesktop.org/D1888 +--- + tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index b623764..e94822d 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -24,7 +24,7 @@ AM_CPPFLAGS = -DG_LOG_DOMAIN=\"libnice-tests\" + + AM_TESTS_ENVIRONMENT = \ + G_MESSAGES_DEBUG=all \ +- NICE_DEBUG=all; ++ NICE_DEBUG=all + + COMMON_LDADD = $(top_builddir)/agent/libagent.la $(top_builddir)/socket/libsocket.la $(GLIB_LIBS) $(GUPNP_LIBS) + +-- +2.13.6 + + +From 17f30e4465efe9533799b02d6f95feeaf0f2748c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miguel=20Par=C3=ADs?= +Date: Wed, 8 Nov 2017 16:26:47 +0000 +Subject: [PATCH 67/70] conncheck: do not require that all streams have a + connection check list + +One or more streams might not have any connection check list if the +number of streams differs from the peer agent. +Differential Revision: https://phabricator.freedesktop.org/D1880 +--- + agent/conncheck.c | 23 ---- + tests/Makefile.am | 3 + + tests/test-different-number-streams.c | 208 ++++++++++++++++++++++++++++++++++ + 3 files changed, 211 insertions(+), 23 deletions(-) + create mode 100644 tests/test-different-number-streams.c + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index e584c0e..beb43c3 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -402,23 +402,6 @@ priv_conn_check_find_next_frozen (GSList *conn_check_list) + } + + /* +- * Returns the number of check lists of the agent +- */ +-static guint +-priv_number_of_check_lists (NiceAgent *agent) +-{ +- guint n = 0; +- GSList *i; +- +- for (i = agent->streams; i ; i = i->next) { +- NiceStream *stream = i->data; +- if (stream->conncheck_list != NULL) +- n++; +- } +- return n; +-} +- +-/* + * Returns the number of active check lists of the agent + */ + static guint +@@ -1060,12 +1043,6 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + gboolean keep_timer_going = FALSE; + GSList *i, *j; + +- /* the conncheck really starts when we have built +- * a connection check list for each stream +- */ +- if (priv_number_of_check_lists (agent) < g_slist_length (agent->streams)) +- return TRUE; +- + /* configure the initial state of the check lists of the agent + * as described in ICE spec, 5.7.4 + * +diff --git a/tests/Makefile.am b/tests/Makefile.am +index e94822d..30d6f8e 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -46,6 +46,7 @@ check_PROGRAMS = \ + test-socket-is-based-on \ + test-priority \ + test-fullmode \ ++ test-different-number-streams \ + test-restart \ + test-fallback \ + test-thread \ +@@ -114,6 +115,8 @@ test_mainloop_LDADD = $(COMMON_LDADD) + + test_fullmode_LDADD = $(COMMON_LDADD) + ++test_different_number_streams_LDADD = $(COMMON_LDADD) ++ + test_restart_LDADD = $(COMMON_LDADD) + + test_fallback_LDADD = $(COMMON_LDADD) +diff --git a/tests/test-different-number-streams.c b/tests/test-different-number-streams.c +new file mode 100644 +index 0000000..7fd4763 +--- /dev/null ++++ b/tests/test-different-number-streams.c +@@ -0,0 +1,208 @@ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include "agent.h" ++ ++#include ++#include ++ ++#define ADD_2_STREAMS TRUE ++#define USE_SECOND_STREAM TRUE ++ ++static GMainLoop *global_mainloop = NULL; ++ ++static guint global_components_ready = 0; ++static guint global_components_ready_exit = 0; ++ ++static gboolean timer_cb (gpointer pointer) ++{ ++ g_debug ("test-different-number-streams:%s: %p", G_STRFUNC, pointer); ++ ++ /* signal status via a global variable */ ++ ++ /* note: should not be reached, abort */ ++ g_error ("ERROR: test has got stuck, aborting..."); ++ ++ return FALSE; ++} ++ ++static void cb_candidate_gathering_done(NiceAgent *agent, guint stream_id, gpointer data) ++{ ++ g_debug ("%p: gathering done (stream_id: %u)", agent, stream_id); ++} ++ ++static void cb_component_state_changed (NiceAgent *agent, guint stream_id, guint component_id, guint state, gpointer data) ++{ ++ g_debug ("%p: component state changed (stream_id: %u, component_id: %u, state: %s)", ++ agent, stream_id, component_id, nice_component_state_to_string (state)); ++ ++ if (state == NICE_COMPONENT_STATE_READY) { ++ global_components_ready++; ++ } ++ ++ /* signal status via a global variable */ ++ if (global_components_ready == global_components_ready_exit) { ++ g_debug ("Components ready/failed achieved. Stopping mailoop"); ++ g_main_loop_quit (global_mainloop); ++ } ++} ++ ++static void set_candidates (NiceAgent *from, guint from_stream, ++ NiceAgent *to, guint to_stream, guint component) ++{ ++ GSList *cands = NULL, *i; ++ ++ cands = nice_agent_get_local_candidates (from, from_stream, component); ++ nice_agent_set_remote_candidates (to, to_stream, component, cands); ++ ++ for (i = cands; i; i = i->next) ++ nice_candidate_free ((NiceCandidate *) i->data); ++ g_slist_free (cands); ++} ++ ++static void cb_nice_recv (NiceAgent *agent, guint stream_id, guint component_id, guint len, gchar *buf, gpointer user_data) ++{ ++ g_debug ("%p: recv (stream_id: %u, component_id: %u)", agent, stream_id, component_id); ++} ++ ++int main (void) ++{ ++ NiceAgent *lagent, *ragent; ++ guint timer_id; ++ guint ls_id, rs_id_1, rs_id_2; ++ gchar *lufrag = NULL, *lpassword = NULL; ++ gchar *rufrag1 = NULL, *rpassword1 = NULL, *rufrag2 = NULL, *rpassword2 = NULL; ++ ++#ifdef G_OS_WIN32 ++ WSADATA w; ++ ++ WSAStartup(0x0202, &w); ++#endif ++ ++ global_mainloop = g_main_loop_new (NULL, FALSE); ++ ++ /* step: create the agents L and R */ ++ lagent = nice_agent_new (g_main_loop_get_context (global_mainloop), ++ NICE_COMPATIBILITY_GOOGLE); ++ g_debug ("lagent: %p", lagent); ++ nice_agent_set_software (lagent, "test-different-number-streams, Left Agent"); ++ g_object_set (G_OBJECT (lagent), "ice-tcp", FALSE, NULL); ++ g_object_set (G_OBJECT (lagent), "controlling-mode", TRUE, NULL); ++ g_object_set (G_OBJECT (lagent), "upnp", FALSE, NULL); ++ g_signal_connect (G_OBJECT (lagent), "candidate-gathering-done", ++ G_CALLBACK (cb_candidate_gathering_done), NULL); ++ g_signal_connect (G_OBJECT (lagent), "component-state-changed", ++ G_CALLBACK (cb_component_state_changed), NULL); ++ ++ ragent = nice_agent_new (g_main_loop_get_context (global_mainloop), ++ NICE_COMPATIBILITY_GOOGLE); ++ g_debug ("ragent: %p", ragent); ++ nice_agent_set_software (ragent, "test-different-number-streams, Right Agent"); ++ g_object_set (G_OBJECT (ragent), "ice-tcp", FALSE, NULL); ++ g_object_set (G_OBJECT (ragent), "controlling-mode", FALSE, NULL); ++ g_object_set (G_OBJECT (ragent), "upnp", FALSE, NULL); ++ g_signal_connect (G_OBJECT (ragent), "candidate-gathering-done", ++ G_CALLBACK (cb_candidate_gathering_done), NULL); ++ g_signal_connect (G_OBJECT (ragent), "component-state-changed", ++ G_CALLBACK (cb_component_state_changed), NULL); ++ ++ /* step: add a timer to catch state changes triggered by signals */ ++ timer_id = g_timeout_add (30000, timer_cb, NULL); ++ ++ ls_id = nice_agent_add_stream (lagent, 2); ++ g_assert (ls_id > 0); ++ nice_agent_get_local_credentials(lagent, ls_id, &lufrag, &lpassword); ++ ++ /* step: attach to mainloop (needed to register the fds) */ ++ nice_agent_attach_recv (lagent, ls_id, NICE_COMPONENT_TYPE_RTP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ nice_agent_attach_recv (lagent, ls_id, NICE_COMPONENT_TYPE_RTCP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ ++ global_components_ready_exit = 4; ++ ++ if (ADD_2_STREAMS) { ++ rs_id_1 = nice_agent_add_stream (ragent, 2); ++ g_assert (rs_id_1 > 0); ++ nice_agent_get_local_credentials(ragent, rs_id_1, &rufrag1, &rpassword1); ++ ++ rs_id_2 = nice_agent_add_stream (ragent, 2); ++ g_assert (rs_id_2 > 0); ++ nice_agent_get_local_credentials(ragent, rs_id_2, &rufrag2, &rpassword2); ++ ++ nice_agent_set_remote_credentials (ragent, rs_id_2, lufrag, lpassword); ++ nice_agent_set_remote_credentials (lagent, ls_id, rufrag2, rpassword2); ++ ++ g_assert (nice_agent_gather_candidates (lagent, ls_id) == TRUE); ++ g_assert (nice_agent_gather_candidates (ragent, rs_id_2) == TRUE); ++ g_assert (nice_agent_gather_candidates (ragent, rs_id_1) == TRUE); ++ ++ if (USE_SECOND_STREAM) { ++ set_candidates (ragent, rs_id_2, lagent, ls_id, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (ragent, rs_id_2, lagent, ls_id, NICE_COMPONENT_TYPE_RTCP); ++ set_candidates (lagent, ls_id, ragent, rs_id_2, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (lagent, ls_id, ragent, rs_id_2, NICE_COMPONENT_TYPE_RTCP); ++ } else { ++ set_candidates (ragent, rs_id_1, lagent, ls_id, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (ragent, rs_id_1, lagent, ls_id, NICE_COMPONENT_TYPE_RTCP); ++ set_candidates (lagent, ls_id, ragent, rs_id_1, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (lagent, ls_id, ragent, rs_id_1, NICE_COMPONENT_TYPE_RTCP); ++ } ++ ++ /* step: attach to mainloop (needed to register the fds) */ ++ nice_agent_attach_recv (ragent, rs_id_1, NICE_COMPONENT_TYPE_RTP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ nice_agent_attach_recv (ragent, rs_id_1, NICE_COMPONENT_TYPE_RTCP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ nice_agent_attach_recv (ragent, rs_id_2, NICE_COMPONENT_TYPE_RTP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ nice_agent_attach_recv (ragent, rs_id_2, NICE_COMPONENT_TYPE_RTCP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ } else { ++ rs_id_1 = nice_agent_add_stream (ragent, 2); ++ g_assert (rs_id_1 > 0); ++ nice_agent_get_local_credentials(ragent, rs_id_1, &rufrag1, &rpassword1); ++ ++ nice_agent_set_remote_credentials (ragent, rs_id_1, lufrag, lpassword); ++ nice_agent_set_remote_credentials (lagent, ls_id, rufrag1, rpassword1); ++ ++ g_assert (nice_agent_gather_candidates (lagent, ls_id) == TRUE); ++ g_assert (nice_agent_gather_candidates (ragent, rs_id_1) == TRUE); ++ ++ /* step: attach to mainloop (needed to register the fds) */ ++ nice_agent_attach_recv (ragent, rs_id_1, NICE_COMPONENT_TYPE_RTP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ nice_agent_attach_recv (ragent, rs_id_1, NICE_COMPONENT_TYPE_RTCP, ++ g_main_loop_get_context (global_mainloop), cb_nice_recv, NULL); ++ ++ set_candidates (ragent, rs_id_1, lagent, ls_id, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (ragent, rs_id_1, lagent, ls_id, NICE_COMPONENT_TYPE_RTCP); ++ set_candidates (lagent, ls_id, ragent, rs_id_1, NICE_COMPONENT_TYPE_RTP); ++ set_candidates (lagent, ls_id, ragent, rs_id_1, NICE_COMPONENT_TYPE_RTCP); ++ } ++ ++ /* step: run the mainloop until connectivity checks succeed ++ * (see timer_cb() above) */ ++ g_main_loop_run (global_mainloop); ++ ++ g_free (lufrag); ++ g_free (lpassword); ++ g_free (rufrag1); ++ g_free (rpassword1); ++ g_free (rufrag2); ++ g_free (rpassword2); ++ g_object_unref (lagent); ++ g_object_unref (ragent); ++ ++ g_main_loop_unref (global_mainloop); ++ global_mainloop = NULL; ++ ++ g_source_remove (timer_id); ++ ++#ifdef G_OS_WIN32 ++ WSACleanup(); ++#endif ++ ++ return 0; ++} +-- +2.13.6 + + +From 59fcf95d505c3995f858b826d10cd48321ed383e Mon Sep 17 00:00:00 2001 +From: Youness Alaoui +Date: Mon, 27 Nov 2017 17:07:02 -0500 +Subject: [PATCH 68/70] turn: Add support for ALTERNATE_SERVER in OC2007 + Compatibility + +The MS Office TURN servers will always return the MS_ALTERNATE_SERVER in +allocation responses, and if they are not handled, we end up using the +main turn server to send allocation requests that then get sent to the +alternate server which will return the XOR_MAPPED_ADDRESS containing +the IP address of the turn server that proxied the message instead of +our own actual external IP. +--- + agent/conncheck.c | 14 ++++++++++++++ + stun/usages/turn.c | 11 +++++++++++ + stun/usages/turn.h | 4 ++++ + 3 files changed, 29 insertions(+) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index beb43c3..229c8b1 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3764,6 +3764,20 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + recv_realm = (uint8_t *) stun_message_find (resp, + STUN_ATTRIBUTE_REALM, &recv_realm_len); + ++ if ((agent->compatibility == NICE_COMPATIBILITY_OC2007 || ++ agent->compatibility == NICE_COMPATIBILITY_OC2007R2) && ++ alternatelen != sizeof(alternate)) { ++ NiceAddress alternate_addr; ++ ++ nice_address_set_from_sockaddr (&alternate_addr, &alternate.addr); ++ ++ if (!nice_address_equal (&alternate_addr, &d->server)) { ++ nice_address_set_from_sockaddr (&d->server, &alternate.addr); ++ nice_address_set_from_sockaddr (&d->turn->server, &alternate.addr); ++ ++ d->pending = FALSE; ++ } ++ } + /* check for unauthorized error response */ + if ((agent->compatibility == NICE_COMPATIBILITY_RFC5245 || + agent->compatibility == NICE_COMPATIBILITY_OC2007 || +diff --git a/stun/usages/turn.c b/stun/usages/turn.c +index 3b94959..ec12642 100644 +--- a/stun/usages/turn.c ++++ b/stun/usages/turn.c +@@ -300,6 +300,17 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, + stun_debug (" STUN error message received (code: %d)", code); + + /* ALTERNATE-SERVER mechanism */ ++ if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_OC2007 && ++ alternate_server && alternate_server_len && ++ stun_message_find_addr (msg, STUN_ATTRIBUTE_MS_ALTERNATE_SERVER, ++ alternate_server, ++ alternate_server_len) == STUN_MESSAGE_RETURN_SUCCESS) { ++ stun_debug ("Found alternate server"); ++ /* The ALTERNATE_SERVER will always be returned by the MS turn server. ++ * We need to check if the ALTERNATE_SERVER is the same as the current ++ * server to decide whether we need to switch servers or not. ++ */ ++ } + if ((code / 100) == 3) { + if (alternate_server && alternate_server_len) { + if (stun_message_find_addr (msg, STUN_ATTRIBUTE_ALTERNATE_SERVER, +diff --git a/stun/usages/turn.h b/stun/usages/turn.h +index 7a2d4e6..83fa00a 100644 +--- a/stun/usages/turn.h ++++ b/stun/usages/turn.h +@@ -256,6 +256,10 @@ size_t stun_usage_turn_create_permission (StunAgent *agent, StunMessage *msg, + * Allocate request, in case the currently used TURN server is requesting the use + * of an alternate server. This argument will only be filled if the return value + * of the function is #STUN_USAGE_TURN_RETURN_ALTERNATE_SERVER ++ * In the case of @STUN_USAGE_TURN_COMPATIBILITY_OC2007 compatibility, the ++ * @alternate_server could be filled at any time, and should only be considered ++ * if the request was sent to a different server than the address returned ++ * in the @alternate_server field + * @alternate_server_len: The length of @alternate_server + * @bandwidth: A pointer to fill with the bandwidth the TURN server allocated us + * @lifetime: A pointer to fill with the lifetime of the allocation +-- +2.13.6 + + +From 4172d48852ecd1c86cc7bd4665b23697603d1eed Mon Sep 17 00:00:00 2001 +From: Youness Alaoui +Date: Tue, 28 Nov 2017 15:14:11 -0500 +Subject: [PATCH 69/70] discovery: Increase discovery_unsched_items whenever we + restart a check + +The discovery_unsched_items is decremented every time a DiscoveryCandidate +goes from non-pending to pending. So if we restart a check by setting +pending to FALSE, we should re-increase the discovery_unsched_items. +--- + agent/conncheck.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 229c8b1..5b08311 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3507,6 +3507,7 @@ static gboolean priv_map_reply_to_discovery_request (NiceAgent *agent, StunMessa + d->server = niceaddr; + + d->pending = FALSE; ++ agent->discovery_unsched_items++; + } else if (res == STUN_USAGE_BIND_RETURN_SUCCESS) { + /* case: successful binding discovery, create a new local candidate */ + +@@ -3648,6 +3649,7 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + nice_address_set_from_sockaddr (&d->turn->server, &alternate.addr); + + d->pending = FALSE; ++ agent->discovery_unsched_items++; + } else if (res == STUN_USAGE_TURN_RETURN_RELAY_SUCCESS || + res == STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS) { + /* case: successful allocate, create a new local candidate */ +@@ -3776,6 +3778,7 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + nice_address_set_from_sockaddr (&d->turn->server, &alternate.addr); + + d->pending = FALSE; ++ agent->discovery_unsched_items++; + } + } + /* check for unauthorized error response */ +@@ -3798,6 +3801,7 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + d->stun_resp_msg.buffer = d->stun_resp_buffer; + d->stun_resp_msg.buffer_len = sizeof(d->stun_resp_buffer); + d->pending = FALSE; ++ agent->discovery_unsched_items++; + } else { + /* case: a real unauthorized error */ + d->stun_message.buffer = NULL; +-- +2.13.6 + + +From fb2f1f77a31baa91968fc81c205f980b6913f403 Mon Sep 17 00:00:00 2001 +From: Youness Alaoui +Date: Tue, 28 Nov 2017 16:05:18 -0500 +Subject: [PATCH 70/70] conncheck: handle alternate-server for turn relays + differently + +If a relay gives us an alternate-server, we need to cancel and reset +every candidate discovery attempt that uses the same server, to avoid +ending up with one component on one server and the other component on +another server (causing relay candidates with mismatched foundations). +--- + agent/conncheck.c | 56 ++++++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 43 insertions(+), 13 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 5b08311..c8a4edf 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3592,6 +3592,41 @@ priv_add_new_turn_refresh (CandidateDiscovery *cdisco, NiceCandidate *relay_cand + return cand; + } + ++static void priv_handle_turn_alternate_server (NiceAgent *agent, ++ CandidateDiscovery *disco, NiceAddress server, NiceAddress alternate) ++{ ++ /* We need to cancel and reset all candidate discovery turn for the same ++ stream and type if there is an alternate server. Otherwise, we might end up ++ with two relay components on different servers, creating candidates with ++ unique foundations that only contain one component. ++ */ ++ GSList *i; ++ ++ for (i = agent->discovery_list; i; i = i->next) { ++ CandidateDiscovery *d = i->data; ++ ++ if (!d->done && ++ d->type == disco->type && ++ d->stream == disco->stream && ++ d->turn->type == disco->turn->type && ++ nice_address_equal (&d->server, &server)) { ++ gchar ip[INET6_ADDRSTRLEN]; ++ // Cancel the pending request to avoid a race condition with another ++ // component responding with another altenrate-server ++ d->stun_message.buffer = NULL; ++ d->stun_message.buffer_len = 0; ++ ++ nice_address_to_string (&server, ip); ++ nice_debug ("Agent %p : Cancelling and setting alternate server %s for " ++ "CandidateDiscovery %p", agent, ip, d); ++ d->server = alternate; ++ d->turn->server = alternate; ++ d->pending = FALSE; ++ agent->discovery_unsched_items++; ++ } ++ } ++} ++ + /* + * Tries to match STUN reply in 'buf' to an existing STUN discovery + * transaction. If found, a reply is sent. +@@ -3644,12 +3679,11 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + agent, d, (int)res); + + if (res == STUN_USAGE_TURN_RETURN_ALTERNATE_SERVER) { +- /* handle alternate server */ +- nice_address_set_from_sockaddr (&d->server, &alternate.addr); +- nice_address_set_from_sockaddr (&d->turn->server, &alternate.addr); ++ NiceAddress addr; + +- d->pending = FALSE; +- agent->discovery_unsched_items++; ++ /* handle alternate server */ ++ nice_address_set_from_sockaddr (&addr, &alternate.addr); ++ priv_handle_turn_alternate_server (agent, d, d->server, addr); + } else if (res == STUN_USAGE_TURN_RETURN_RELAY_SUCCESS || + res == STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS) { + /* case: successful allocate, create a new local candidate */ +@@ -3769,16 +3803,12 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + if ((agent->compatibility == NICE_COMPATIBILITY_OC2007 || + agent->compatibility == NICE_COMPATIBILITY_OC2007R2) && + alternatelen != sizeof(alternate)) { +- NiceAddress alternate_addr; +- +- nice_address_set_from_sockaddr (&alternate_addr, &alternate.addr); ++ NiceAddress addr; + +- if (!nice_address_equal (&alternate_addr, &d->server)) { +- nice_address_set_from_sockaddr (&d->server, &alternate.addr); +- nice_address_set_from_sockaddr (&d->turn->server, &alternate.addr); ++ nice_address_set_from_sockaddr (&addr, &alternate.addr); + +- d->pending = FALSE; +- agent->discovery_unsched_items++; ++ if (!nice_address_equal (&addr, &d->server)) { ++ priv_handle_turn_alternate_server (agent, d, d->server, addr); + } + } + /* check for unauthorized error response */ +-- +2.13.6 + +From db6166ee247a8f9fa4ebe2a08d223de73cbd2e96 Mon Sep 17 00:00:00 2001 +From: Jozsef Vass +Date: Mon, 8 Jan 2018 10:53:23 -0800 +Subject: [PATCH 01/15] agent: Fixes incompatible pointer type warning on OSX. + +The variable tie is actually never read. +--- + agent/conncheck.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index c8a4edf..38a90cd 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3421,7 +3421,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + states" and 8.1.2 "Updating States", ID-19) */ + priv_update_check_list_state_for_ready (agent, stream, component); + } else if (res == STUN_USAGE_ICE_RETURN_ROLE_CONFLICT) { +- guint64 tie; ++ uint64_t tie; + gboolean controlled_mode; + + /* case: role conflict error, need to restart with new role */ +-- +2.14.3 + + +From ae3e5acc775ee6c1701ff9a2404b14e4d5dd6c20 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 26 Nov 2017 17:13:19 +0100 +Subject: [PATCH 02/15] conncheck: rework early stun requests handling +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With this patch we simplify the code used to handle the incoming stun +request when remote candidates or remote credentials have not been +received yet. + +When the remote credentials is unknown, the stun request is stored +in a list of incoming_checks for later processing, and no further +processing is done, except responding to the request. + +When the remote credentials are received, the triggered checks for these +incoming checks can now be queued, and the related pairs are created. + +If the remote candidates have not been received when the stun request +on a valid local port arrives, a peer-reflexive remote candidate will be +created. This candidate may need to be updated later when remote +candidates are finally received, including candidate priority and +foundation, and also related pairs. + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1889 +--- + agent/agent.c | 42 ++++++++++++-- + agent/conncheck.c | 168 ++++++++++-------------------------------------------- + agent/conncheck.h | 1 + + 3 files changed, 66 insertions(+), 145 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 0773c53..49fc371 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3300,6 +3300,28 @@ nice_agent_add_local_address (NiceAgent *agent, NiceAddress *addr) + return TRUE; + } + ++/* Recompute foundations of all candidate pairs from a given stream ++ * having a specific remote candidate ++ */ ++static void priv_update_pair_foundations (NiceAgent *agent, ++ guint stream_id, NiceCandidate *remote) ++{ ++ NiceStream *stream = agent_find_stream (agent, stream_id); ++ if (stream) { ++ GSList *i; ++ for (i = stream->conncheck_list; i; i = i->next) { ++ CandidateCheckPair *pair = i->data; ++ if (pair->remote == remote) { ++ g_snprintf (pair->foundation, ++ NICE_CANDIDATE_PAIR_MAX_FOUNDATION, "%s:%s", ++ pair->local->foundation, pair->remote->foundation); ++ nice_debug ("Agent %p : Updating pair %p foundation to '%s'", ++ agent, pair, pair->foundation); ++ } ++ } ++ } ++} ++ + static gboolean priv_add_remote_candidate ( + NiceAgent *agent, + guint stream_id, +@@ -3331,8 +3353,7 @@ static gboolean priv_add_remote_candidate ( + + /* If it was a discovered remote peer reflexive candidate, then it should + * be updated according to RFC 5245 section 7.2.1.3 */ +- if (candidate && candidate->type == NICE_CANDIDATE_TYPE_PEER_REFLEXIVE && +- candidate->priority == priority) { ++ if (candidate && candidate->type == NICE_CANDIDATE_TYPE_PEER_REFLEXIVE) { + nice_debug ("Agent %p : Updating existing peer-rfx remote candidate to %s", + agent, _cand_type_to_sdp (type)); + candidate->type = type; +@@ -3375,6 +3396,13 @@ static gboolean priv_add_remote_candidate ( + g_free (candidate->password); + candidate->password = g_strdup (password); + } ++ ++ /* since the type of the existing candidate may have changed, ++ * the pairs priority and foundation related to this candidate need ++ * to be recomputed. ++ */ ++ recalculate_pair_priorities (agent); ++ priv_update_pair_foundations (agent, stream_id, candidate); + } + else { + /* case 2: add a new candidate */ +@@ -3429,12 +3457,14 @@ static gboolean priv_add_remote_candidate ( + if (foundation) + g_strlcpy (candidate->foundation, foundation, + NICE_CANDIDATE_MAX_FOUNDATION); +- } + +- if (conn_check_add_for_candidate (agent, stream_id, component, candidate) < 0) { +- goto errors; ++ /* We only create a pair when a candidate is new, and not when ++ * updating an existing one. ++ */ ++ if (conn_check_add_for_candidate (agent, stream_id, ++ component, candidate) < 0) ++ goto errors; + } +- + return TRUE; + + errors: +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 38a90cd..11ef9c9 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1690,34 +1690,6 @@ gint conn_check_compare (const CandidateCheckPair *a, const CandidateCheckPair * + return 0; + } + +-/* +- * Preprocesses a new connectivity check by going through list +- * of a any stored early incoming connectivity checks from +- * the remote peer. If a matching incoming check has been already +- * received, update the state of the new outgoing check 'pair'. +- * +- * @param agent context pointer +- * @param stream which stream (of the agent) +- * @param component pointer to component object to which 'pair'has been added +- * @param pair newly added connectivity check +- */ +-static void priv_preprocess_conn_check_pending_data (NiceAgent *agent, NiceStream *stream, NiceComponent *component, CandidateCheckPair *pair) +-{ +- GSList *i; +- for (i = component->incoming_checks; i; i = i->next) { +- IncomingCheck *icheck = i->data; +- if (nice_address_equal (&icheck->from, &pair->remote->addr) && +- icheck->local_socket == pair->sockptr) { +- nice_debug ("Agent %p : Updating check %p with stored early-icheck %p, %p/%u/%u (agent/stream/component).", agent, pair, icheck, agent, stream->id, component->id); +- priv_schedule_triggered_check (agent, stream, component, +- icheck->local_socket, pair->remote); +- if (icheck->use_candidate) +- priv_mark_pair_nominated (agent, stream, component, pair->local, pair->remote); +- } +- } +-} +- +- + /* + * Handle any processing steps for connectivity checks after + * remote credentials have been set. This function handles +@@ -1728,126 +1700,39 @@ static void priv_preprocess_conn_check_pending_data (NiceAgent *agent, NiceStrea + */ + void conn_check_remote_credentials_set(NiceAgent *agent, NiceStream *stream) + { +- GSList *j, *k, *l, *m, *n, *o; ++ GSList *j, *k, *l, *m; + +- for (j = stream->conncheck_list; j ; j = j->next) { +- CandidateCheckPair *pair = j->data; +- NiceComponent *component = +- nice_stream_find_component_by_id (stream, pair->component_id); +- gboolean match = FALSE; +- +- /* performn delayed processing of spec steps section 7.2.1.4, +- and section 7.2.1.5 */ +- priv_preprocess_conn_check_pending_data (agent, stream, component, pair); ++ for (j = stream->components; j ; j = j->next) { ++ NiceComponent *component = j->data; + + for (k = component->incoming_checks; k; k = k->next) { + IncomingCheck *icheck = k->data; + /* sect 7.2.1.3., "Learning Peer Reflexive Candidates", has to + * be handled separately */ + for (l = component->remote_candidates; l; l = l->next) { +- NiceCandidate *cand = l->data; +- if (nice_address_equal (&icheck->from, &cand->addr)) { +- match = TRUE; +- break; +- } +- } +- if (match != TRUE) { +- /* note: we have gotten an incoming connectivity check from +- * an address that is not a known remote candidate */ +- +- NiceCandidate *local_candidate = NULL; +- NiceCandidate *remote_candidate = NULL; +- +- if (agent->compatibility == NICE_COMPATIBILITY_GOOGLE || +- agent->compatibility == NICE_COMPATIBILITY_MSN || +- agent->compatibility == NICE_COMPATIBILITY_OC2007) { +- /* We need to find which local candidate was used */ +- uint8_t uname[NICE_STREAM_MAX_UNAME]; +- guint uname_len; +- +- nice_debug ("Agent %p: We have a peer-reflexive candidate in a " +- "stored pending check", agent); +- +- for (m = component->remote_candidates; +- m != NULL && remote_candidate == NULL; m = m->next) { +- for (n = component->local_candidates; n; n = n->next) { +- NiceCandidate *rcand = m->data; +- NiceCandidate *lcand = n->data; +- +- uname_len = priv_create_username (agent, stream, +- component->id, rcand, lcand, +- uname, sizeof (uname), TRUE); +- +- stun_debug ("pending check, comparing usernames of len %d and %d, equal=%d", +- icheck->username_len, uname_len, +- icheck->username && uname_len == icheck->username_len && +- memcmp (uname, icheck->username, icheck->username_len) == 0); +- stun_debug_bytes (" first username: ", +- icheck->username, +- icheck->username? icheck->username_len : 0); +- stun_debug_bytes (" second username: ", uname, uname_len); +- +- if (icheck->username && +- uname_len == icheck->username_len && +- memcmp (uname, icheck->username, icheck->username_len) == 0) { +- local_candidate = lcand; +- remote_candidate = rcand; +- break; +- } +- } +- } +- } else { +- for (l = component->local_candidates; l; l = l->next) { +- NiceCandidate *cand = l->data; ++ NiceCandidate *rcand = l->data; ++ NiceCandidate *lcand = NULL; ++ if (nice_address_equal (&rcand->addr, &icheck->from)) { ++ for (m = component->local_candidates; m; m = m->next) { ++ NiceCandidate *cand = m->data; + if (nice_address_equal (&cand->addr, &icheck->local_socket->addr)) { +- local_candidate = cand; ++ lcand = cand; + break; + } + } +- } +- +- if (agent->compatibility == NICE_COMPATIBILITY_GOOGLE && +- local_candidate == NULL) { +- /* if we couldn't match the username, then the matching remote +- * candidate hasn't been received yet.. we must wait */ +- nice_debug ("Agent %p : Username check failed. pending check has " +- "to wait to be processed", agent); +- } else { +- NiceCandidate *candidate; +- +- nice_debug ("Agent %p : Discovered peer reflexive from early i-check", +- agent); +- candidate = +- discovery_learn_remote_peer_reflexive_candidate (agent, +- stream, +- component, +- icheck->priority, +- &icheck->from, +- icheck->local_socket, +- local_candidate, remote_candidate); +- if (candidate) { +- if (local_candidate && +- local_candidate->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE) +- priv_conn_check_add_for_candidate_pair_matched (agent, +- stream->id, component, local_candidate, candidate, NICE_CHECK_DISCOVERED); +- else +- conn_check_add_for_candidate (agent, stream->id, component, candidate); +- +- priv_schedule_triggered_check (agent, stream, component, +- icheck->local_socket, candidate); +- if (icheck->use_candidate) +- priv_mark_pair_nominated (agent, stream, component, local_candidate, candidate); +- } ++ g_assert (lcand != NULL); ++ priv_schedule_triggered_check (agent, stream, component, ++ icheck->local_socket, rcand); ++ if (icheck->use_candidate) ++ priv_mark_pair_nominated (agent, stream, component, ++ lcand, rcand); ++ break; + } + } + } +- } +- +- /* Once we process the pending checks, we should free them to avoid +- * reprocessing them again if a dribble-mode set_remote_candidates +- * is called */ +- for (o = stream->components; o; o = o->next) { +- NiceComponent *component = o->data; ++ /* Once we process the pending checks, we should free them to avoid ++ * reprocessing them again if a dribble-mode set_remote_candidates ++ * is called */ + g_slist_free_full (component->incoming_checks, + (GDestroyNotify) incoming_check_free); + component->incoming_checks = NULL; +@@ -2964,8 +2849,8 @@ static gboolean priv_schedule_triggered_check (NiceAgent *agent, NiceStream *str + + if (i) { + nice_debug ("Agent %p : Adding a triggered check to conn.check list (local=%p).", agent, local); +- p = priv_add_new_check_pair (agent, stream->id, component, +- local, remote_cand, NICE_CHECK_WAITING); ++ p = priv_conn_check_add_for_candidate_pair_matched (agent, stream->id, ++ component, local, remote_cand, NICE_CHECK_WAITING); + priv_add_pair_to_triggered_check_queue (agent, p); + return TRUE; + } +@@ -3018,7 +2903,12 @@ static void priv_reply_to_conn_check (NiceAgent *agent, NiceStream *stream, + ms_ice2_legacy_conncheck_send(msg, sockptr, toaddr); + } + +- if (rcand) { ++ /* We react to this stun request when we have the remote credentials. ++ * When credentials are not yet known, this request is stored ++ * in incoming_checks for later processing when returning from this ++ * function. ++ */ ++ if (rcand && stream->remote_ufrag[0]) { + priv_schedule_triggered_check (agent, stream, component, sockptr, rcand); + if (use_candidate) + priv_mark_pair_nominated (agent, stream, component, lcand, rcand); +@@ -3114,7 +3004,7 @@ static CandidateCheckPair *priv_add_peer_reflexive_pair (NiceAgent *agent, guint + * Recalculates priorities of all candidate pairs. This + * is required after a conflict in ICE roles. + */ +-static void priv_recalculate_pair_priorities (NiceAgent *agent) ++void recalculate_pair_priorities (NiceAgent *agent) + { + GSList *i, *j; + +@@ -3143,7 +3033,7 @@ static void priv_check_for_role_conflict (NiceAgent *agent, gboolean control) + agent->controlling_mode = control; + /* the pair priorities depend on the roles, so recalculation + * is needed */ +- priv_recalculate_pair_priorities (agent); ++ recalculate_pair_priorities (agent); + } + else + nice_debug ("Agent %p : Role conflict, staying with role \"%s\".", +diff --git a/agent/conncheck.h b/agent/conncheck.h +index e16dc67..8cfe2d6 100644 +--- a/agent/conncheck.h ++++ b/agent/conncheck.h +@@ -119,5 +119,6 @@ conn_check_prune_socket (NiceAgent *agent, NiceStream *stream, NiceComponent *co + NiceSocket *sock); + + guint32 ensure_unique_priority (NiceComponent *component, guint32 priority); ++void recalculate_pair_priorities (NiceAgent *agent); + + #endif /*_NICE_CONNCHECK_H */ +-- +2.14.3 + + +From 025d84b53bd4ffc0626dd25aa8351319f4d77944 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 26 Nov 2017 17:36:27 +0100 +Subject: [PATCH 03/15] test-new-dribble: make credentials swap asymmetric +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +the first case of test-new-dribble (standard-test) is updated, by making +the credentials swap between the left and right agent asymmetric. +Previously, ragent started to receive stun requests without initially +knowing lagent candidates. Now, ragent also ignores lagent credentials. +This modification allows to test changes introduced by the previous +commit. + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1890 +--- + tests/test-new-dribble.c | 55 ++++++++++++++++++++---------------------------- + 1 file changed, 23 insertions(+), 32 deletions(-) + +diff --git a/tests/test-new-dribble.c b/tests/test-new-dribble.c +index 3e60ae3..947f55d 100644 +--- a/tests/test-new-dribble.c ++++ b/tests/test-new-dribble.c +@@ -269,7 +269,7 @@ static gpointer stun_thread_func (const gpointer user_data) + return NULL; + } + +-static void set_credentials (NiceAgent *lagent, guint lstream, ++static void swap_credentials (NiceAgent *lagent, guint lstream, + NiceAgent *ragent, guint rstream) + { + gchar *ufrag = NULL, *password = NULL; +@@ -279,12 +279,6 @@ static void set_credentials (NiceAgent *lagent, guint lstream, + + g_free (ufrag); + g_free (password); +- +- nice_agent_get_local_credentials (ragent, rstream, &ufrag, &password); +- nice_agent_set_remote_credentials (lagent, lstream, ufrag, password); +- +- g_free (ufrag); +- g_free (password); + } + + static void cb_candidate_gathering_done(NiceAgent *agent, guint stream_id, gpointer data) +@@ -500,12 +494,10 @@ static void standard_test(NiceAgent *lagent, NiceAgent *ragent) + g_cancellable_reset (global_cancellable); + g_assert (ragent_candidate_gathering_done); + +- set_credentials (lagent, global_ls_id, ragent, global_rs_id); + + g_debug ("Setting local candidates of ragent as remote candidates of lagent"); +- swap_candidates (ragent, global_rs_id, +- lagent, global_ls_id, +- TRUE); ++ swap_candidates (ragent, global_rs_id, lagent, global_ls_id, TRUE); ++ swap_credentials (ragent, global_rs_id, lagent, global_ls_id); + + while (!data_received) + g_main_context_iteration (NULL, TRUE); +@@ -514,9 +506,9 @@ static void standard_test(NiceAgent *lagent, NiceAgent *ragent) + data_received); + + g_debug ("Setting local candidates of lagent as remote candidates of ragent"); +- swap_candidates (lagent, global_ls_id, +- ragent, global_rs_id, +- FALSE); ++ swap_candidates (lagent, global_ls_id, ragent, global_rs_id, FALSE); ++ swap_credentials (lagent, global_ls_id, ragent, global_rs_id); ++ + while (!lagent_candidate_gathering_done) + g_main_context_iteration (NULL, TRUE); + g_cancellable_reset (global_cancellable); +@@ -557,22 +549,21 @@ static void bad_credentials_test(NiceAgent *lagent, NiceAgent *ragent) + g_cancellable_reset (global_cancellable); + g_assert (ragent_candidate_gathering_done); + +- swap_candidates (ragent, global_rs_id, +- lagent, global_ls_id, +- FALSE); ++ g_debug ("Setting local candidates of ragent as remote candidates of lagent"); ++ swap_candidates (ragent, global_rs_id, lagent, global_ls_id, FALSE); ++ + while (global_lagent_state != NICE_COMPONENT_STATE_FAILED) + g_main_context_iteration (NULL, TRUE); + g_cancellable_reset (global_cancellable); + + // Set the correct credentials and swap candidates +- set_credentials (lagent, global_ls_id, ragent, global_rs_id); +- swap_candidates (ragent, global_rs_id, +- lagent, global_ls_id, +- FALSE); ++ g_debug ("Setting local candidates of ragent as remote candidates of lagent"); ++ swap_candidates (ragent, global_rs_id, lagent, global_ls_id, FALSE); ++ swap_credentials (lagent, global_ls_id, ragent, global_rs_id); + +- swap_candidates (lagent, global_ls_id, +- ragent, global_rs_id, +- FALSE); ++ g_debug ("Setting local candidates of lagent as remote candidates of ragent"); ++ swap_candidates (lagent, global_ls_id, ragent, global_rs_id, FALSE); ++ swap_credentials (ragent, global_rs_id, lagent, global_ls_id); + + while (!data_received) + g_main_context_iteration (NULL, TRUE); +@@ -628,15 +619,14 @@ static void bad_candidate_test(NiceAgent *lagent,NiceAgent *ragent) + + g_assert (global_lagent_state == NICE_COMPONENT_STATE_FAILED && + !data_received); +- set_credentials (lagent, global_ls_id, ragent, global_rs_id); + +- swap_candidates (ragent, global_rs_id, +- lagent, global_ls_id, +- FALSE); ++ g_debug ("Setting local candidates of ragent as remote candidates of lagent"); ++ swap_candidates (ragent, global_rs_id, lagent, global_ls_id, FALSE); ++ swap_credentials (ragent, global_rs_id, lagent, global_ls_id); + +- swap_candidates (lagent, global_ls_id, +- ragent, global_rs_id, +- FALSE); ++ g_debug ("Setting local candidates of lagent as remote candidates of ragent"); ++ swap_candidates (lagent, global_ls_id, ragent, global_rs_id, FALSE); ++ swap_credentials (lagent, global_ls_id, ragent, global_rs_id); + + while (!data_received) + g_main_context_iteration (NULL, TRUE); +@@ -655,7 +645,8 @@ static void new_candidate_test(NiceAgent *lagent, NiceAgent *ragent) + g_debug ("test-dribblemode:%s", G_STRFUNC); + + init_test (lagent, ragent, TRUE); +- set_credentials (lagent, global_ls_id, ragent, global_rs_id); ++ swap_credentials (lagent, global_ls_id, ragent, global_rs_id); ++ swap_credentials (ragent, global_rs_id, lagent, global_ls_id); + + nice_agent_gather_candidates (lagent, global_ls_id); + while (!got_stun_packet) +-- +2.14.3 + + +From b5dd5e2aa72a68ac9f027bbcc22700db84a35677 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 26 Nov 2017 17:49:25 +0100 +Subject: [PATCH 04/15] conncheck: the conncheck send function may fail +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With this patch, we put the pair in state failed if we cannot send +the connection check, for example due to missing local credentials. + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1891 +--- + agent/conncheck.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 11ef9c9..9618c3a 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -442,7 +442,11 @@ static gboolean priv_conn_check_initiate (NiceAgent *agent, CandidateCheckPair * + { + pair->state = NICE_CHECK_IN_PROGRESS; + nice_debug ("Agent %p : pair %p state IN_PROGRESS", agent, pair); +- conn_check_send (agent, pair); ++ if (conn_check_send (agent, pair)) { ++ pair->state = NICE_CHECK_FAILED; ++ nice_debug ("Agent %p : pair %p state FAILED", agent, pair); ++ return FALSE; ++ } + return TRUE; + } + +@@ -1070,7 +1074,11 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + if (pair) { + priv_print_conn_check_lists (agent, G_STRFUNC, + ", got a pair from triggered check list"); +- conn_check_send (agent, pair); ++ if (conn_check_send (agent, pair)) { ++ pair->state = NICE_CHECK_FAILED; ++ nice_debug ("Agent %p : pair %p state FAILED", agent, pair); ++ return FALSE; ++ } + return TRUE; + } + +-- +2.14.3 + + +From 47aa02885cda9ddf6e938f966a926be000611c5a Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 26 Nov 2017 18:10:12 +0100 +Subject: [PATCH 05/15] conncheck: factorize pair state debug +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1892 +--- + agent/conncheck.c | 69 +++++++++++++++++++++++++------------------------------ + 1 file changed, 31 insertions(+), 38 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 9618c3a..00d02c5 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -123,22 +123,29 @@ priv_state_to_string (NiceCheckState state) + { + switch (state) { + case NICE_CHECK_WAITING: +- return "waiting"; ++ return "WAITING"; + case NICE_CHECK_IN_PROGRESS: +- return "in progress"; ++ return "IN_PROGRESS"; + case NICE_CHECK_SUCCEEDED: +- return "succeeded"; ++ return "SUCCEEDED"; + case NICE_CHECK_FAILED: +- return "failed"; ++ return "FAILED"; + case NICE_CHECK_FROZEN: +- return "frozen"; ++ return "FROZEN"; + case NICE_CHECK_DISCOVERED: +- return "discovered"; ++ return "DISCOVERED"; + default: + g_assert_not_reached (); + } + } + ++#define SET_PAIR_STATE( a, p, s ) G_STMT_START{\ ++ g_assert (p); \ ++ p->state = s; \ ++ nice_debug ("Agent %p : pair %p state %s (%s)", \ ++ a, p, priv_state_to_string (s), G_STRFUNC); \ ++}G_STMT_END ++ + static const gchar * + priv_ice_return_to_string (StunUsageIceReturn ice_return) + { +@@ -251,8 +258,7 @@ priv_add_pair_to_triggered_check_queue (NiceAgent *agent, CandidateCheckPair *pa + { + g_assert (pair); + +- pair->state = NICE_CHECK_IN_PROGRESS; +- nice_debug ("Agent %p : pair %p state IN_PROGRESS", agent, pair); ++ SET_PAIR_STATE (agent, pair, NICE_CHECK_IN_PROGRESS); + if (agent->triggered_check_queue == NULL || + g_slist_find (agent->triggered_check_queue, pair) == NULL) + agent->triggered_check_queue = g_slist_append (agent->triggered_check_queue, pair); +@@ -440,11 +446,9 @@ priv_find_first_frozen_check_list (NiceAgent *agent) + */ + static gboolean priv_conn_check_initiate (NiceAgent *agent, CandidateCheckPair *pair) + { +- pair->state = NICE_CHECK_IN_PROGRESS; +- nice_debug ("Agent %p : pair %p state IN_PROGRESS", agent, pair); ++ SET_PAIR_STATE (agent, pair, NICE_CHECK_IN_PROGRESS); + if (conn_check_send (agent, pair)) { +- pair->state = NICE_CHECK_FAILED; +- nice_debug ("Agent %p : pair %p state FAILED", agent, pair); ++ SET_PAIR_STATE (agent, pair, NICE_CHECK_FAILED); + return FALSE; + } + return TRUE; +@@ -495,8 +499,7 @@ static gboolean priv_conn_check_unfreeze_next (NiceAgent *agent, NiceStream *str + if (pair) { + nice_debug ("Agent %p : Pair %p with s/c-id %u/%u (%s) unfrozen.", + agent, pair, pair->stream_id, pair->component_id, pair->foundation); +- pair->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, pair); ++ SET_PAIR_STATE (agent, pair, NICE_CHECK_WAITING); + result = TRUE; + } + } +@@ -535,8 +538,7 @@ static void priv_conn_check_unfreeze_related (NiceAgent *agent, NiceStream *stre + strncmp (p->foundation, ok_check->foundation, + NICE_CANDIDATE_PAIR_MAX_FOUNDATION) == 0) { + nice_debug ("Agent %p : Unfreezing check %p (after successful check %p).", agent, p, ok_check); +- p->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, p); ++ SET_PAIR_STATE (agent, p, NICE_CHECK_WAITING); + } + } + } +@@ -559,8 +561,7 @@ static void priv_conn_check_unfreeze_related (NiceAgent *agent, NiceStream *stre + if (p->state == NICE_CHECK_FROZEN && + priv_foundation_matches_a_valid_pair (p->foundation, stream)) { + nice_debug ("Agent %p : Unfreezing check %p from stream %u (after successful check %p).", agent, p, s->id, ok_check); +- p->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, p); ++ SET_PAIR_STATE (agent, p, NICE_CHECK_WAITING); + } + } + } else if (priv_is_checklist_frozen (s)) { +@@ -576,8 +577,7 @@ static void priv_conn_check_unfreeze_related (NiceAgent *agent, NiceStream *stre + if (priv_foundation_matches_a_valid_pair (p->foundation, stream)) { + match_found = TRUE; + nice_debug ("Agent %p : Unfreezing check %p from stream %u (after successful check %p).", agent, p, s->id, ok_check); +- p->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, p); ++ SET_PAIR_STATE (agent, p, NICE_CHECK_WAITING); + } + } + +@@ -675,8 +675,7 @@ candidate_check_pair_fail (NiceStream *stream, NiceAgent *agent, CandidateCheckP + NiceComponent *component; + + component = nice_stream_find_component_by_id (stream, p->component_id); +- p->state = NICE_CHECK_FAILED; +- nice_debug ("Agent %p : pair %p state FAILED", agent, p); ++ SET_PAIR_STATE (agent, p, NICE_CHECK_FAILED); + priv_free_all_stun_transactions (p, component); + } + +@@ -841,8 +840,7 @@ timer_return_timeout: + if (pair) { + priv_print_conn_check_lists (agent, G_STRFUNC, + ", got a pair in Frozen state"); +- pair->state = NICE_CHECK_WAITING; +- nice_debug ("Agent %p : pair %p state WAITING", agent, pair); ++ SET_PAIR_STATE (agent, pair, NICE_CHECK_WAITING); + priv_conn_check_initiate (agent, pair); + return TRUE; + } +@@ -1075,8 +1073,7 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent) + priv_print_conn_check_lists (agent, G_STRFUNC, + ", got a pair from triggered check list"); + if (conn_check_send (agent, pair)) { +- pair->state = NICE_CHECK_FAILED; +- nice_debug ("Agent %p : pair %p state FAILED", agent, pair); ++ SET_PAIR_STATE (agent, pair, NICE_CHECK_FAILED); + return FALSE; + } + return TRUE; +@@ -2067,8 +2064,8 @@ static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + g_snprintf (pair->foundation, NICE_CANDIDATE_PAIR_MAX_FOUNDATION, "%s:%s", local->foundation, remote->foundation); + + pair->priority = agent_candidate_pair_priority (agent, local, remote); +- pair->state = initial_state; +- nice_debug ("Agent %p : creating new pair %p state %d", agent, pair, initial_state); ++ nice_debug ("Agent %p : creating a new pair", agent); ++ SET_PAIR_STATE (agent, pair, initial_state); + { + gchar tmpbuf1[INET6_ADDRSTRLEN]; + gchar tmpbuf2[INET6_ADDRSTRLEN]; +@@ -2976,10 +2973,10 @@ static CandidateCheckPair *priv_add_peer_reflexive_pair (NiceAgent *agent, guint + pair->local = local_cand; + pair->remote = parent_pair->remote; + pair->sockptr = local_cand->sockptr; +- pair->state = NICE_CHECK_DISCOVERED; + parent_pair->discovered_pair = pair; + pair->succeeded_pair = parent_pair; +- nice_debug ("Agent %p : new pair %p state DISCOVERED", agent, pair); ++ nice_debug ("Agent %p : creating a new pair", agent); ++ SET_PAIR_STATE (agent, pair, NICE_CHECK_DISCOVERED); + { + gchar tmpbuf1[INET6_ADDRSTRLEN]; + gchar tmpbuf2[INET6_ADDRSTRLEN]; +@@ -3099,10 +3096,9 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + */ + if (new_pair == p) + p->valid = TRUE; +- p->state = NICE_CHECK_SUCCEEDED; ++ SET_PAIR_STATE (agent, p, NICE_CHECK_SUCCEEDED); + priv_remove_pair_from_triggered_check_queue (agent, p); + priv_free_all_stun_transactions (p, component); +- nice_debug ("Agent %p : conncheck %p SUCCEEDED.", agent, p); + nice_component_add_valid_candidate (component, remote_candidate); + } + else { +@@ -3135,11 +3131,9 @@ static CandidateCheckPair *priv_process_response_check_for_reflexive(NiceAgent * + /* step: The agent sets the state of the pair that *generated* the check to + * Succeeded, RFC 5245, 7.1.3.2.3, "Updating Pair States" + */ +- p->state = NICE_CHECK_SUCCEEDED; ++ SET_PAIR_STATE (agent, p, NICE_CHECK_SUCCEEDED); + priv_remove_pair_from_triggered_check_queue (agent, p); + priv_free_all_stun_transactions (p, component); +- nice_debug ("Agent %p : conncheck %p SUCCEEDED, %p DISCOVERED.", +- agent, p, new_pair); + } + + if (new_pair && new_pair->valid) +@@ -3226,10 +3220,9 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + * "Discovering Peer Reflexive Candidates" ICE ID-19) */ + + if (res == STUN_USAGE_ICE_RETURN_NO_MAPPED_ADDRESS) { +- p->state = NICE_CHECK_SUCCEEDED; ++ nice_debug ("Agent %p : Mapped address not found", agent); ++ SET_PAIR_STATE (agent, p, NICE_CHECK_SUCCEEDED); + p->valid = TRUE; +- nice_debug ("Agent %p : Mapped address not found." +- " conncheck %p SUCCEEDED.", agent, p); + nice_component_add_valid_candidate (component, p->remote); + } else + ok_pair = priv_process_response_check_for_reflexive (agent, +-- +2.14.3 + + +From 05f1e30239a448385709df0edd43ec3ac5173218 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Sun, 26 Nov 2017 19:31:39 +0100 +Subject: [PATCH 06/15] conncheck: make debug more homonegeous +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1893 +--- + agent/conncheck.c | 35 ++++++++++++++++++----------------- + 1 file changed, 18 insertions(+), 17 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 00d02c5..25bfd80 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -753,8 +753,8 @@ timer_return_timeout: + /* case: error, abort processing */ + nice_address_to_string (&p->local->addr, tmpbuf1); + nice_address_to_string (&p->remote->addr, tmpbuf2); +- nice_debug ("Agent %p : Retransmissions failed, giving up on " +- "connectivity check %p", agent, p); ++ nice_debug ("Agent %p : Retransmissions failed, giving up on pair %p", ++ agent, p); + nice_debug ("Agent %p : Failed pair is [%s]:%u --> [%s]:%u", agent, + tmpbuf1, nice_address_get_port (&p->local->addr), + tmpbuf2, nice_address_get_port (&p->remote->addr)); +@@ -973,7 +973,7 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + p = p->succeeded_pair; + } + g_assert (p->state == NICE_CHECK_SUCCEEDED); +- nice_debug ("Agent %p : restarting check %p with " ++ nice_debug ("Agent %p : restarting check of pair %p with " + "USE-CANDIDATE attrib (regular nomination)", agent, p); + p->use_candidate_on_next_check = TRUE; + priv_add_pair_to_triggered_check_queue (agent, p); +@@ -996,7 +996,8 @@ priv_conn_check_tick_stream_nominate (NiceStream *stream, NiceAgent *agent) + if (p->component_id == component->id && + (p->state == NICE_CHECK_SUCCEEDED || + p->state == NICE_CHECK_DISCOVERED)) { +- nice_debug ("Agent %p : restarting check %p as the nominated pair.", agent, p); ++ nice_debug ("Agent %p : restarting check of pair %p as the " ++ "nominated pair.", agent, p); + p->nominated = TRUE; + priv_update_selected_pair (agent, component, p); + priv_add_pair_to_triggered_check_queue (agent, p); +@@ -2081,7 +2082,9 @@ static CandidateCheckPair *priv_add_new_check_pair (NiceAgent *agent, + stream->conncheck_list = g_slist_insert_sorted (stream->conncheck_list, pair, + (GCompareFunc)conn_check_compare); + +- nice_debug ("Agent %p : added a new conncheck %p with foundation of '%s' to list %u.", agent, pair, pair->foundation, stream_id); ++ nice_debug ("Agent %p : added a new pair %p with foundation '%s' to " ++ "stream %u component %u.", agent, pair, pair->foundation, stream_id, ++ component->id); + + /* implement the hard upper limit for number of + checks (see sect 5.7.3 ICE ID-19): */ +@@ -2117,9 +2120,6 @@ static CandidateCheckPair *priv_conn_check_add_for_candidate_pair_matched ( + { + CandidateCheckPair *pair; + +- nice_debug ("Agent %p : Adding check pair between %s and %s for s%d/c%d", +- agent, local->foundation, remote->foundation, +- stream_id, component->id); + pair = priv_add_new_check_pair (agent, stream_id, component, local, remote, + initial_state); + if (component->state == NICE_COMPONENT_STATE_CONNECTED || +@@ -2997,7 +2997,8 @@ static CandidateCheckPair *priv_add_peer_reflexive_pair (NiceAgent *agent, guint + pair->nominated = FALSE; + pair->prflx_priority = ensure_unique_priority (component, + peer_reflexive_candidate_priority (agent, local_cand)); +- nice_debug ("Agent %p : added a new peer-discovered pair with foundation of '%s'.", agent, pair->foundation); ++ nice_debug ("Agent %p : added a new peer-discovered pair with " ++ "foundation '%s'.", agent, pair->foundation); + + stream->conncheck_list = g_slist_insert_sorted (stream->conncheck_list, pair, + (GCompareFunc)conn_check_compare); +@@ -3190,7 +3191,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + + CandidateCheckPair *ok_pair = NULL; + +- nice_debug ("Agent %p : conncheck %p MATCHED.", agent, p); ++ nice_debug ("Agent %p : pair %p MATCHED.", agent, p); + priv_remove_stun_transaction (p, stun, component); + + /* step: verify that response came from the same IP address we +@@ -3201,7 +3202,7 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + if (nice_debug_is_enabled ()) { + gchar tmpbuf[INET6_ADDRSTRLEN]; + gchar tmpbuf2[INET6_ADDRSTRLEN]; +- nice_debug ("Agent %p : conncheck %p FAILED" ++ nice_debug ("Agent %p : pair %p FAILED" + " (mismatch of source address).", agent, p); + nice_address_to_string (&p->remote->addr, tmpbuf); + nice_address_to_string (from, tmpbuf2); +@@ -3316,7 +3317,8 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + gboolean controlled_mode; + + /* case: role conflict error, need to restart with new role */ +- nice_debug ("Agent %p : conncheck %p ROLE CONFLICT, restarting", agent, p); ++ nice_debug ("Agent %p : Role conflict with pair %p, restarting", ++ agent, p); + + /* note: this res value indicates that the role of the peer + * agent has not changed after the tie-breaker comparison, so +@@ -3341,7 +3343,6 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, NiceStre + priv_add_pair_to_triggered_check_queue (agent, p); + } else { + /* case: STUN error, the check STUN context was freed */ +- nice_debug ("Agent %p : conncheck %p FAILED.", agent, p); + candidate_check_pair_fail (stream, agent, p); + } + return TRUE; +@@ -4228,8 +4229,8 @@ gboolean conn_check_handle_inbound_stun (NiceAgent *agent, NiceStream *stream, + agent_signal_initial_binding_request_received (agent, stream); + + if (remote_candidate == NULL) { +- nice_debug ("Agent %p : No matching remote candidate for incoming check ->" +- "peer-reflexive candidate.", agent); ++ nice_debug ("Agent %p : No matching remote candidate for incoming " ++ "check -> peer-reflexive candidate.", agent); + remote_candidate = discovery_learn_remote_peer_reflexive_candidate ( + agent, stream, component, priority, from, nicesock, + local_candidate, +@@ -4332,8 +4333,8 @@ conn_check_prune_socket (NiceAgent *agent, NiceStream *stream, NiceComponent *co + if ((p->local != NULL && p->local->sockptr == sock) || + (p->remote != NULL && p->remote->sockptr == sock) || + (p->sockptr == sock)) { +- nice_debug ("Agent %p : Retransmissions failed, giving up on " +- "connectivity check %p", agent, p); ++ nice_debug ("Agent %p : Retransmissions failed, giving up on pair %p", ++ agent, p); + candidate_check_pair_fail (stream, agent, p); + conn_check_free_item (p); + stream->conncheck_list = g_slist_delete_link (stream->conncheck_list, l); +-- +2.14.3 + + +From 00dfcc6a625e6c6ed758a4b3b4d0858113508a2f Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 27 Nov 2017 23:56:17 +0100 +Subject: [PATCH 07/15] socket: ping the stun server address on the right + socket +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +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.14.3 + + +From ea05a3d51990d17bbe25984eb5730849f46bfae0 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Wed, 29 Nov 2017 11:04:04 +0100 +Subject: [PATCH 08/15] conncheck: dont fail a stream with a empty conncheck + list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Since commit 17f30e4, we may have a stream with an empty conncheck list, +and such a stream obviously should not be tested for failed components. + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1895 +--- + agent/conncheck.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 4d91f41..0ebe7e9 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -1832,6 +1832,9 @@ static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStre + * must be fetched before entering the loop*/ + guint c, components = stream->n_components; + ++ if (stream->conncheck_list == NULL) ++ return; ++ + for (i = agent->discovery_list; i; i = i->next) { + CandidateDiscovery *d = i->data; + +@@ -1846,8 +1849,8 @@ static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStre + + /* note: iterate the conncheck list for each component separately */ + for (c = 0; c < components; c++) { +- NiceComponent *comp = NULL; +- if (!agent_find_component (agent, stream->id, c+1, NULL, &comp)) ++ NiceComponent *component = NULL; ++ if (!agent_find_component (agent, stream->id, c+1, NULL, &component)) + continue; + + nominated = 0; +@@ -1873,7 +1876,7 @@ static void priv_update_check_list_failed_components (NiceAgent *agent, NiceStre + * Set the component to FAILED only if it actually had remote candidates + * that failed.. */ + if (completed && nominated == 0 && +- comp != NULL && comp->remote_candidates != NULL) ++ component != NULL && component->remote_candidates != NULL) + agent_signal_component_state_change (agent, + stream->id, + (c + 1), /* component-id */ +-- +2.14.3 + + +From a9ac0487b0d1708d780d7c0b7a2206c71a8c7163 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Thu, 30 Nov 2017 20:11:22 +0100 +Subject: [PATCH 09/15] discovery: ignore all non-relay local candidates when + relay is forced +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The tcp server reflexive discovered local candidates must be ignored +when force_relay is set. + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1899 +--- + agent/discovery.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/agent/discovery.c b/agent/discovery.c +index 4cc99c2..e2142a2 100644 +--- a/agent/discovery.c ++++ b/agent/discovery.c +@@ -688,7 +688,8 @@ discovery_discover_tcp_server_reflexive_candidates ( + + caddr = c->addr; + nice_address_set_port (&caddr, 0); +- if (c->transport != NICE_CANDIDATE_TRANSPORT_UDP && ++ if (agent->force_relay == FALSE && ++ c->transport != NICE_CANDIDATE_TRANSPORT_UDP && + c->type == NICE_CANDIDATE_TYPE_HOST && + nice_address_equal (&base_addr, &caddr)) { + nice_address_set_port (address, nice_address_get_port (&c->addr)); +-- +2.14.3 + + +From 5a644f459dc75c80dfb19c7772f74e37a0258771 Mon Sep 17 00:00:00 2001 +From: Fabrice Bellet +Date: Mon, 11 Dec 2017 08:50:33 +0100 +Subject: [PATCH 10/15] agent: make candidate username and password immutable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With this patch we prevent the username and the password of a candidate +to be modified during a session, as required by the RFC, sect 9.1.2. +This is also needed from a memory management point of view, because the +password string pointer may be recorded in the components stun agent +sent_ids[] struct key member, and freeing these values there may cause +an use-after-free condition, when an inbound stun is received from this +candidate. This behavior has been observed with pidgin, xmpp, and +farstream when a same remote candidates are "updated" several times, +even if the credentials don't change in this case. + +Reviewed-by: Olivier Crête +Differential Revision: https://phabricator.freedesktop.org/D1917 +--- + agent/agent.c | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index 3306378..dbece3b 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -3388,15 +3388,22 @@ static gboolean priv_add_remote_candidate ( + * this is essential to overcome a race condition where we might receive + * a valid binding request from a valid candidate that wasn't yet added to + * our list of candidates.. this 'update' will make the peer-rflx a +- * server-rflx/host candidate again and restore that user/pass it needed +- * to have in the first place */ ++ * server-rflx/host candidate again */ + if (username) { +- g_free (candidate->username); +- candidate->username = g_strdup (username); ++ if (candidate->username == NULL) ++ candidate->username = g_strdup (username); ++ else if (g_strcmp0 (username, candidate->username)) ++ nice_debug ("Agent %p : Candidate username '%s' is not allowed " ++ "to change to '%s' now (ICE restart only).", agent, ++ candidate->username, username); + } + if (password) { +- g_free (candidate->password); +- candidate->password = g_strdup (password); ++ if (candidate->password == NULL) ++ candidate->password = g_strdup (password); ++ else if (g_strcmp0 (password, candidate->password)) ++ nice_debug ("Agent %p : candidate password '%s' is not allowed " ++ "to change to '%s' now (ICE restart only).", agent, ++ candidate->password, password); + } + + /* since the type of the existing candidate may have changed, +-- +2.14.3 + + +From 54fb03427ebc13413cd1ddd5d9e91c1751eac0cb Mon Sep 17 00:00:00 2001 +From: Jakub Adam +Date: Sat, 3 Feb 2018 23:59:20 +0100 +Subject: [PATCH 11/15] discovery: ignore bogus Skype for Business srflx + addresses + +If main SfB TURN server sends our allocation request to an alternate +server, the response will have XOR_MAPPED_ADDRESS containing the IP +address of the turn server that proxied the message instead of our own +actual external IP. + +Before we create server reflexive candidates upon receiving an allocate +response, check that the TURN port got assigned on the same server we +sent out allocate request to. Otherwise, the request was proxied and +XOR_MAPPED_ADDRESS contains a bogus value we should ignore. + +Issue introduced by 59fcf95d505c3995f858b826d10cd48321ed383e. +Differential Revision: https://phabricator.freedesktop.org/D1949 +--- + agent/conncheck.c | 31 +++++++++++++++++++++---------- + 1 file changed, 21 insertions(+), 10 deletions(-) + +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 0ebe7e9..19729c2 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -3587,9 +3587,13 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + NiceAddress niceaddr; + NiceCandidate *relay_cand; + ++ nice_address_set_from_sockaddr (&niceaddr, &relayaddr.addr); ++ + if (res == STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS) { ++ NiceAddress mappedniceaddr; ++ + /* We also received our mapped address */ +- nice_address_set_from_sockaddr (&niceaddr, &sockaddr.addr); ++ nice_address_set_from_sockaddr (&mappedniceaddr, &sockaddr.addr); + + /* TCP or TLS TURNS means the server-reflexive address was + * on a TCP connection, which cannot be used for server-reflexive +@@ -3601,21 +3605,28 @@ static gboolean priv_map_reply_to_relay_request (NiceAgent *agent, StunMessage * + d->agent, + d->stream->id, + d->component->id, +- &niceaddr, ++ &mappedniceaddr, + NICE_CANDIDATE_TRANSPORT_UDP, + d->nicesock, + FALSE); + } +- if (d->agent->use_ice_tcp) +- discovery_discover_tcp_server_reflexive_candidates ( +- d->agent, +- d->stream->id, +- d->component->id, +- &niceaddr, +- d->nicesock); ++ if (d->agent->use_ice_tcp) { ++ if ((agent->compatibility == NICE_COMPATIBILITY_OC2007 || ++ agent->compatibility == NICE_COMPATIBILITY_OC2007R2) && ++ !nice_address_equal_no_port (&niceaddr, &d->turn->server)) { ++ nice_debug("TURN port got allocated on an alternate server, " ++ "ignoring bogus srflx address"); ++ } else { ++ discovery_discover_tcp_server_reflexive_candidates ( ++ d->agent, ++ d->stream->id, ++ d->component->id, ++ &mappedniceaddr, ++ d->nicesock); ++ } ++ } + } + +- nice_address_set_from_sockaddr (&niceaddr, &relayaddr.addr); + if (nice_socket_is_reliable (d->nicesock)) { + relay_cand = discovery_add_relay_candidate ( + d->agent, +-- +2.14.3 + + +From 922ee4e61b4d9c6b403933f4a3261e67589d5099 Mon Sep 17 00:00:00 2001 +From: Jakub Adam +Date: Wed, 19 Apr 2017 14:17:04 +0200 +Subject: [PATCH 12/15] agent: don't require "reliable" be TRUE in order to use + "ice-tcp" + +Setting writable socket callbacks doesn't have to be limited to reliable +agents. TCP sockets need the callback in any case for correct operation +and calling nice_socket_set_writable_callback() on a NiceSocket that has +UDP as its base has no effect. + +Differential Revision: https://phabricator.freedesktop.org/D1726 +--- + agent/agent.c | 11 ++++------- + agent/conncheck.c | 5 ++--- + 2 files changed, 6 insertions(+), 10 deletions(-) + +diff --git a/agent/agent.c b/agent/agent.c +index dbece3b..89e3514 100644 +--- a/agent/agent.c ++++ b/agent/agent.c +@@ -2547,9 +2547,8 @@ priv_add_new_candidate_discovery_turn (NiceAgent *agent, + if (nicesock == NULL) + return; + +- if (agent->reliable) +- nice_socket_set_writable_callback (nicesock, _tcp_sock_is_writable, +- component); ++ nice_socket_set_writable_callback (nicesock, _tcp_sock_is_writable, component); ++ + if (turn->type == NICE_RELAY_TYPE_TURN_TLS && + agent->compatibility == NICE_COMPATIBILITY_GOOGLE) { + nicesock = nice_pseudossl_socket_new (nicesock, +@@ -3033,10 +3032,8 @@ nice_agent_gather_candidates ( + found_local_address = TRUE; + nice_address_set_port (addr, 0); + +- +- if (agent->reliable) +- nice_socket_set_writable_callback (host_candidate->sockptr, +- _tcp_sock_is_writable, component); ++ nice_socket_set_writable_callback (host_candidate->sockptr, ++ _tcp_sock_is_writable, component); + + #ifdef HAVE_GUPNP + if (agent->upnp_enabled && agent->upnp && +diff --git a/agent/conncheck.c b/agent/conncheck.c +index 19729c2..64a3cb8 100644 +--- a/agent/conncheck.c ++++ b/agent/conncheck.c +@@ -2669,9 +2669,8 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair) + pair->sockptr = new_socket; + _priv_set_socket_tos (agent, pair->sockptr, stream2->tos); + +- if (agent->reliable) +- nice_socket_set_writable_callback (pair->sockptr, +- _tcp_sock_is_writable, component2); ++ nice_socket_set_writable_callback (pair->sockptr, _tcp_sock_is_writable, ++ component2); + + nice_component_attach_socket (component2, new_socket); + } +-- +2.14.3 + + +From e6217f8eba6ea17d90eac67ef5fa5412fbf10dad Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Fri, 4 May 2018 15:44:05 +0200 +Subject: [PATCH 13/15] Ignore function case warnings + +This makes GLib usage annoying as it makes GSourceFunc casts invalid. +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 16988ad..36bd622 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -136,6 +136,7 @@ AS_IF([test "x$enable_compile_warnings" != "xno" -a \ + NICE_ADD_FLAG([-Wcast-align]) + NICE_ADD_FLAG([-Wformat-nonliteral]) + NICE_ADD_FLAG([-Wformat-security]) ++ NICE_ADD_FLAG([-Wno-cast-function-type]) + ]) + AS_IF([test "$enable_compile_warnings" = "yes" -o \ + "$enable_compile_warnings" = "maximum" -o \ +-- +2.14.3 + + +From 3a9d92818b4c2f083e26fe164a1be82212bd4061 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Fri, 4 May 2018 16:44:45 +0200 +Subject: [PATCH 14/15] stund: Pass the right length for ipv6 + +--- + stun/tools/stund.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/stun/tools/stund.c b/stun/tools/stund.c +index addc4fa..c148e51 100644 +--- a/stun/tools/stund.c ++++ b/stun/tools/stund.c +@@ -100,6 +100,8 @@ int listen_socket (int fam, int type, int proto, unsigned int port) + struct sockaddr_in6 in6; + struct sockaddr_storage storage; + } addr; ++ int len; ++ + if (fd == -1) + { + perror ("Error opening IP port"); +@@ -118,6 +120,7 @@ int listen_socket (int fam, int type, int proto, unsigned int port) + { + case AF_INET: + addr.in.sin_port = htons (port); ++ len = sizeof (struct sockaddr_in); + break; + + case AF_INET6: +@@ -125,13 +128,14 @@ int listen_socket (int fam, int type, int proto, unsigned int port) + setsockopt (fd, SOL_IPV6, IPV6_V6ONLY, &yes, sizeof (yes)); + #endif + addr.in6.sin6_port = htons (port); ++ len = sizeof (struct sockaddr_in6); + break; + + default: + assert (0); /* should never be reached */ + } + +- if (bind (fd, &addr.addr, sizeof (struct sockaddr))) ++ if (bind (fd, &addr.addr, len)) + { + perror ("Error opening IP port"); + goto error; +-- +2.14.3 + + +From 34d60446ddfcdb98f2543611151ef8fbc5be4805 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= +Date: Fri, 4 May 2018 16:50:45 +0200 +Subject: [PATCH 15/15] stund: Pass sockaddr_storage size for both families + +--- + stun/tools/stund.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/stun/tools/stund.c b/stun/tools/stund.c +index c148e51..00a0881 100644 +--- a/stun/tools/stund.c ++++ b/stun/tools/stund.c +@@ -100,15 +100,12 @@ int listen_socket (int fam, int type, int proto, unsigned int port) + struct sockaddr_in6 in6; + struct sockaddr_storage storage; + } addr; +- int len; + + if (fd == -1) + { + perror ("Error opening IP port"); + return -1; + } +- if (fd < 3) +- goto error; + + memset (&addr, 0, sizeof (addr)); + addr.storage.ss_family = fam; +@@ -120,7 +117,6 @@ int listen_socket (int fam, int type, int proto, unsigned int port) + { + case AF_INET: + addr.in.sin_port = htons (port); +- len = sizeof (struct sockaddr_in); + break; + + case AF_INET6: +@@ -128,14 +124,13 @@ int listen_socket (int fam, int type, int proto, unsigned int port) + setsockopt (fd, SOL_IPV6, IPV6_V6ONLY, &yes, sizeof (yes)); + #endif + addr.in6.sin6_port = htons (port); +- len = sizeof (struct sockaddr_in6); + break; + + default: + assert (0); /* should never be reached */ + } + +- if (bind (fd, &addr.addr, len)) ++ if (bind (fd, &addr.addr, sizeof (struct sockaddr_storage))) + { + perror ("Error opening IP port"); + goto error; +@@ -192,7 +187,7 @@ static int dgram_process (int sock, StunAgent *oldagent, StunAgent *newagent) + StunValidationStatus validation; + StunAgent *agent = NULL; + +- addr_len = sizeof (struct sockaddr_in); ++ addr_len = sizeof (struct sockaddr_storage); + len = recvfrom (sock, buf, sizeof(buf), 0, &addr.addr, &addr_len); + if (len == (size_t)-1) + return -1; +-- +2.14.3 + diff --git a/libnice-0.1.14-tests-i686.patch b/libnice-0.1.14-tests-i686.patch new file mode 100644 index 0000000..6558549 --- /dev/null +++ b/libnice-0.1.14-tests-i686.patch @@ -0,0 +1,48 @@ +From 3f8364b41207d8c26d3d3be518a7d9ebf4243b92 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Fri, 9 Feb 2018 18:01:57 +0100 +Subject: [PATCH] tests: make them compile on i686 + +--- + tests/test-pseudotcp-fuzzy.c | 4 ++-- + tests/test-pseudotcp.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/test-pseudotcp-fuzzy.c b/tests/test-pseudotcp-fuzzy.c +index 4a714e6..030c03f 100644 +--- a/tests/test-pseudotcp-fuzzy.c ++++ b/tests/test-pseudotcp-fuzzy.c +@@ -129,7 +129,7 @@ write_to_sock (PseudoTcpSocket *sock) + total += wlen; + total_read += wlen; + if (wlen < (gint) len) { +- g_debug ("seeking %ld from %lu", wlen - len, ftell (in)); ++ g_debug ("seeking %ld from %lu", (long) wlen - len, ftell (in)); + fseek (in, wlen - len, SEEK_CUR); + g_assert (!feof (in)); + g_debug ("Socket queue full after %d bytes written", total); +@@ -355,7 +355,7 @@ static void adjust_clock (PseudoTcpSocket *sock) + + if (pseudo_tcp_socket_get_next_clock (sock, &timeout)) { + timeout -= g_get_monotonic_time () / 1000; +- g_debug ("Socket %p: Adjusting clock to %ld ms", sock, timeout); ++ g_debug ("Socket %p: Adjusting clock to %ld ms", sock, (long) timeout); + if (sock == left) { + if (left_clock != 0) + g_source_remove (left_clock); +diff --git a/tests/test-pseudotcp.c b/tests/test-pseudotcp.c +index 1a8391a..584a0d0 100644 +--- a/tests/test-pseudotcp.c ++++ b/tests/test-pseudotcp.c +@@ -81,7 +81,7 @@ static void write_to_sock (PseudoTcpSocket *sock) + total += wlen; + total_read += wlen; + if (wlen < (gint) len) { +- g_debug ("seeking %ld from %lu", wlen - len, ftell (in)); ++ g_debug ("seeking %ld from %lu", (long) wlen - len, ftell (in)); + fseek (in, wlen - len, SEEK_CUR); + g_assert (!feof (in)); + g_debug ("Socket queue full after %d bytes written", total); +-- +2.13.6 + diff --git a/libnice-0.1.14-tests-koji.patch b/libnice-0.1.14-tests-koji.patch new file mode 100644 index 0000000..997e712 --- /dev/null +++ b/libnice-0.1.14-tests-koji.patch @@ -0,0 +1,36 @@ +From 527c30ba453753e75d3d31be29a277ea6adc17c0 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Fri, 9 Feb 2018 19:10:20 +0100 +Subject: [PATCH] tests: make the test-suite more verbose + +... and skip test-gstreamer if user's home is not /builddir (a heuristic +to detect mock) because multicast traffic is blocked on Koji buildhosts. +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 16988ad..b7b74fa 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -12,7 +12,7 @@ AC_CANONICAL_TARGET + + AC_CONFIG_SRCDIR([agent/agent.c]) + AC_CONFIG_HEADERS([config.h]) +-AM_INIT_AUTOMAKE([1.12 -Wall -Wno-portability subdir-objects]) ++AM_INIT_AUTOMAKE([1.12 -Wall -Wno-portability subdir-objects serial-tests]) + + AC_CONFIG_FILES([ + Makefile +@@ -263,7 +263,7 @@ AC_SUBST(gstplugindir) + AC_SUBST(gstplugin010dir) + + AM_CONDITIONAL(WITH_GSTREAMER, test "$with_gstreamer" = yes) +-AM_CONDITIONAL(HAVE_GST_CHECK, test "$have_gst_check" = yes) ++AM_CONDITIONAL(HAVE_GST_CHECK, test "$have_gst_check" = yes -a "$HOME" != /builddir) + AM_CONDITIONAL(WITH_GSTREAMER010, test "$with_gstreamer010" = yes) + + GUPNP_IGD_REQUIRED=0.2.4 +-- +2.13.6 + diff --git a/libnice-0.1.14-turn-verify.patch b/libnice-0.1.14-turn-verify.patch new file mode 100644 index 0000000..2ce2f86 --- /dev/null +++ b/libnice-0.1.14-turn-verify.patch @@ -0,0 +1,32 @@ +From e4d92bf96d0bb64df35790e5b49c58bfa6e9fbcc Mon Sep 17 00:00:00 2001 +From: Jakub Adam +Date: Thu, 20 Apr 2017 06:47:00 +0200 +Subject: [PATCH] component: accept TURN in + nice_component_verify_remote_candidate() + +When TURN is in operation, agent_recv_message_unlocked() may receive from +NiceSocket with type = NICE_SOCKET_TYPE_UDP_TURN. Such messages were always +dropped due to failed nice_component_verify_remote_candidate(). + +Bug: https://phabricator.freedesktop.org/D1727 +--- + agent/component.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/agent/component.c b/agent/component.c +index 6eee90e..3e8a7a6 100644 +--- a/agent/component.c ++++ b/agent/component.c +@@ -1510,7 +1510,8 @@ nice_component_verify_remote_candidate (NiceComponent *component, + (cand->transport == NICE_CANDIDATE_TRANSPORT_TCP_ACTIVE || + cand->transport == NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE || + cand->transport == NICE_CANDIDATE_TRANSPORT_TCP_SO)) || +- cand->transport == NICE_CANDIDATE_TRANSPORT_UDP) && ++ cand->transport == NICE_CANDIDATE_TRANSPORT_UDP || ++ nicesock->type == NICE_SOCKET_TYPE_UDP_TURN) && + nice_address_equal (address, &cand->addr)) { + /* fast return if it's already the first */ + if (item == component->valid_candidates) +-- +2.14.3 + diff --git a/libnice-0.1.14.tar.gz b/libnice-0.1.14.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaabd37105c33f2566aba183cc206663b45ab6ad GIT binary patch literal 1024116 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 v{ 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 z z1(KAlhIfR{S+SMIHJ%d6Y4Y$%^7zRaCQak`iy`Ob`wU7Pk)!Z9>t}gRpOTCqM#-+ZLaOW{ zX-$@b(#{B^n_o6NRhf`RU8bgil^&DF0HF%PhfH(w3wem4y1d-7973fr5 z1zV%;{6)1fS}&V14xAx?c>P~a$iv#_!aLRB7*>1;bK9d>shPm4HwX{Z{2R7NW*YP}9~%y`5bFPz zs(G|$=@ZsIWitTmBaB@`8^HoE#Tnc^!_jbl>v?-{qBo=sOxW_jRN0IGYl=lQ%^5cQ zopQ{)H@E4Q#^0*^0H>dslSb9NqlbE%(|kQ7j(0M(j6Rm=}sO6zfxH=)B86MFH6kpv?&DO2?fe%4gJ$Zell3Ei^6*2w_8y-=U(^1DH zmXif}h?!=NANG!qzCGDL`FjtqdNt;-3_)1R1hK4x?8LSAjnXVuE~Y@3D+nmB576TM z<>d@2dUTe!e!>jtA{CQS8MFD4OjYUz!?-=DK7G6MMXml#?R^#1lCZDrd!wJj%d*qy zRAa9;o7K0}Tc8=|i%Ybg@G71>qD%tN0roOw)|xc2SFi~E%z+&7ku<96@(xR57`J&g z!Uzk`DLYU8iSFiz?vu?O%LCj(KoP5I;Dfy}TQGbq^NI^6_)MF69MB8@g|O1D_-PQ?C>;xLgI`*wXBd_s<;K()8j`Jv8S`K=`oJoUO`_PvV zC>ZopOTJoJ()w9TIi8VSvpEdQJ_yUWBxeWVSjHg5Ei$)eUCyk9Z1Kw2`I%jb%uSrI zM;}zW@l2=w0m?R);7BlTppu^xgT$|f_Y45aL=!uv35O&HQET1k84QE>!Tgf~adP8xV zkvzEGU<(P)OMK=rT-wqxFMDvA7lcsjSXyz1ij+SR?cUE@I4r7%M=yajl9Xej| zGP8>>&@9vMGa5bdSXaRD+bm2@+R9ia0nKk>GTTLI0PAe-NCGtRcFH-1p?Q|bSCIyc zQ?LnURE1AoR^-YiQVJ(3{{Ptf^Zhn%q+t}!zveA`|8!_25*3l+CQ6o~jAV(n^+emN zCCh93VVY!9>M_aYbdy>p_WL`xaW3Ip$GMYpC0{LAdm$+=S>};vB6g#J0#E=7RfR%T zDdA#O-+$4UDTXLps>nCuYa#+?azRkjj3Pz^QEsOQANR3sweRbswKtYy-ZsaI85Tz7 zh!?cY>y&*QIFSG*GP5JL8ci@;`ik?+o5IZCJdvDt#_iylV2rEAM&qWydMX-A`bN47 zeGROD6u;XZJG|%1X#$z*iYj`-*QHV1j$MjQ4ua85TahIsNWwYE2Oje+>^fhsI2~Jx zrcCS>VajfsmQCxV(@RXdBWev*(u;~^nJyOc+*chla5kfOK4~U7Ppiaw5R)Xf5%5h@ z!45@ZpD4Mwg-o-AT>v24C}j#K2>mPcGK1G)!~}`h_Ykgq8KM%FKWAsHA5OL|-zdUR z>Z058FfWPSSi1wXH#4akF?~J70?}tU`ItH^fxO0UtU0+KDPz)KG=@3Q@h=OBD93Zu zAYqg``IMmcPtsg|CJY+!97zC=Ik&9DjU~}Z@4XrH9&duPptcyvy}m2-S!DY|*4215 zh1gdi_bS;_1;`))#*jTNcHfj7;nX2 z>WX$P<~2@eB`BDxyEFipY<|r-DHp4$?@6>v?fb><%LsN9jCF+`e!E`JM~i@H(z#Yg z034+jofL>zf{{O-P|I^qjaepq3bzB;wBGrs7zeUq2E2U2pR@abctAGGN@58e|JqOS{sYL++^# zG~-6^M3^|LGzgW?2jcxr?`>F{xLe2&1~MQp`gwCh=)$D$hGBsxgu+{xIOP*~DvGMd?iKdz3P*88L?6bZGa0T+jvIl*p|yZI6c~+5i3t_(@vl*e zxD4GcI+1$%^r`c_`SRe{IXrld{;qJ&I(sL_FAiRA#@d)mzm#s9Zg0chBj7fV_ve8+ ze=Ddf@%nz7a`hiK!UA9P90prk0k-tU^+A*xk&1#sBcc2$p8CT&k2R^;I6tQZ#9Q_4)pl;oth& z8vi!x)^E8|ZdB`yuPU{2V|}erUaOS9Dp#tNTJ4Fm=7Tc8EDWUy}&(%eSR+(-LseP%Cl$HVzpdZb6$iXKb!}>@h$E&FYuI! zV5~R?!wxKU6;^h85%U+z75Kk6CKjjJNPl_=CK6z_9Nd-h;0o5MkJ3~dLqGVWMqLH! z4HKU=004&F<&bTLhZY~=&>7Fx`PjYhoKD(!RCWjxe~1_4fRJMftQ+z*qv(e2)PTVZ(=P1-kOVF(F0C5}oW*w~Z4v-9e?>p;+p?J&u(x zP}o>{ll}@C;{cSO4=!GvTwXZ4$Gy z!bi=sy;o3T_xZu$!Nsq*AHF!aIBuSwJ1%sIV0J3TpX8fGzo zS!L3Yz-^C4hjmac}AQV?FP_8CO9`U5v+7lmBn_K4f+cr;#8agyDJ6|4zHIQP^T zGi{SW(+c`Io1MH?@4BM4YOyafvA8mpkrUv!?2M#!yit?TB#{qi54BgHS<9LBZI&Gmwt} zwmObY;KtBCz8`r=)6UVl>7J3Pf)OUO;@BcmgkhB6rTj6UkW;n9>yAPnO~r=dIB0;T zIakEFMPtBRsN7ETJSJne3PMw6O9mLaC@ec68pW+)c(~Ashn#de9-b$Og@$zVN_aU( z`UAsmXar1$R>-I!A0Zaal|L>;?u|Pfy4Py;K;o^}Uj4^tTkr~yu;p&I`$4+}oTxwC z>TPQ-V(YrS{i?aUpP=tDaIUbtP_tKBKjH)$0m}*KLN<<$%e+o-HKfrK+U32|OF{se z4sr}*dZXMh1~8c-S{dk;0Z0(q0s_;Gr-+2^WuVB*RFm9j5cN%$Lb6iT*iu+0qhN^Y zXHT3?A_GsB*<_2zVxBceuvQpT<@{L&b#_P?<4~9C<}4rC2efVh>cpq5*d;%S=yd{_ zWg#@UX_Ya1?aJPvhvEcVF6F?h0A`LHbU74I!N46Uq@ry=FcIbi)ElN?BoQE!3HTvK z!1O(=Wkzg4;v1iWf{X&Q>j{in>*CkbX7OnE`0~Z>-UZ07XT_7#=GpGW!ST!1`LE{} z%_F2Gq`HU#^mc+{Nl`%2x);sCU}r57d7TdS$L85_^DqrM+soaC;+j42DOa4nHCVh=`<0 zuI?fK81o}bRwSNG8C;a_;_ z6tBik*%6vRmRT$E*xi~7@5L+H=@-X3bd#9=3h8-AxcU>iP(2}_+)bjK_?Rq3(-tee zrW&skC23*hfkBagV2`zW^ScvWcQ7?Nkv2>CQ%UaqcL zQXuhO5?k8WN>=R)6{`wWfo`PHdeTm_f|iH;DGhnKVD^N#I&vGvYz=qB`Qh8D*6LOe zT!l;nloo?aqqm0vwpvz5%)aUNQHWfw#F-0diz3Zxp#7Oib4&}=96<= zIFh8FJ4?WTLyZO8wqFSaCFyRHtOAdbE(!|-Ju34O&H+!|_F6$CXge$jrtEloiLWgc zG4^}$?Q)U+(lw^)Do}gIrYz6v2%28}*YFN!F|5DIT@mP*eu0jJf#1~$UEdp{vl*2D zI~=@Y2GlHb8g#3#i%dFL0N?Q`Jw;Ud4vAVj>MqL!g!yjhjm@;!D`i1b+9>D)7Z6z= zqA?JhV&~coB1{URYS9}|XT$N}U2z!PxMF$(K8p%9l+t!1zta+v`a#I9tcm~;G@S(w zi_}wHnT6obP+@U0d^Zekhq_|Xvsqvn&cdo}G|bc2&Vp46kEEc;Ted*N?J;%wm6nUE zMF|Ga88O?IJaW;C>FHDF&>JsC#?;3>0GR`>FGA|Z&T4Uui(?72$q;voqJW@C3u*LY zPTq@+ownn!`=6HDvQD;^EpKvMe-4XZ4aoWlzRZ%BsxctXa#BA zqrToTw0FY^2zJyM_nwEX69(+~I19rW6Iz5Kba7wW)O?VP=`I z+qTOL4}K(AErSwNmwF z?GxeEWAN&q2oGSCUe}Ay-b##!;z4AU7dgf64a4}vdT(^S(ySPmeN^R02HTfPC+aCO zMKR-!1o}61S`Xu{dvv$Xn&KRM&r8&w@hrAM)QDPc7xjpcB84Q zN@c?*3&6-Egri8eZ-D9tBK*Vg>#|%wc54TXjd!pm18XY)U}gp&Ws`l6l(9mKC?Y3^ zsI|AG5?hQAC%_h)=MOnRqGXH6Di(8S?WH=V!JQ2yC|2-5v2*01P-hVg{4t&ekfy<~ zRk-K#6M1?ebbyL8dQw?mE92g~wo%3n^S$F%pS=@LXhq+sJL;*`_QV(1k+Bf{dPs#f z-s;!2hJJ3mUe}*S9e3?@WBsiGgu(Mu3=k%0Q21s6Yt&=l2DMtNT9Um8ao2^vURx#% zC}Hrr-GA%xqxZVse#?(HudAYJe6GQ>@ooJz{FT+*gbw|!RXL&U!4v*KS2&>uQ-Gd2 z^*i{|*(k5!v=?icKXohR8%XQc_@|EaYccGT1B;jK)UEx-2e+^aw|-mk4=ZhxaeKhO9_ z<@HC^cbM?6YPl?M{;mQXGd=YgCw+yJ{y?@B9&lvfClo)#pTUAFQ`>Rn;m^i~n1uuP z?q8VD#y^TzvtEcF93Z2Ozut)cqL~T<0KVMepSC9+ytaJki-*3ab5|PrnI5enG}+{1{8PPR6z11NmYSWVmdvtNwzA-BBFi&7 zORSlGinHTAG29vb3z1IKL~O8P!& zqrO0n>kVuj4*z)aw;~^^@*z?wH#JetkNkLg7+0l!(eVM z=lVC1`hRbflMI;6BPlf-vvAnSWD)LsBI{a4*0n^|MtaUhJYydS{d@cae8RK0$ucxp zMY{*0DC};uY~c60BcCc&m7<=aN)<6Tya8?+7Y&RRz!^ONQOLCp16}h5)GRjGGEMTv zTk%@^hp4tjd;DOH3DOPi|F?}b8l!hoB{7I9Dg5%-#!>D`gfs1mxvuf`gtqUysN+(o zp;&3i6+`jel{@x6zO!7B*G{dsKT*OS0 z316xdNN2hjsbdUa;PFfjV?qM&zJl6nEU{EAaI~}_>^gY?EANcSy9h>R4~9L2*!He` zzJia(A$WbyU*-k3(P%a5bfIY~;zk`A{pqQ5BD|{i__&bzfj7BKQG;3p)hrj`e~2ZL z#SVsP#s+VGTd2HQ+*Ais@NQN9W|369N)6m~DtP|$gad_371KNdQCu1V5vI7Tg&6hB z!b@@45@gg@lqL9^A_WDu*c1Z@d1c9ID~2{INCDa)Ao>@*-L%TlCKMPcDA zJ1nJ8m*}alo+u~FFw3gUO~{ET!pKAvVki~G7?lWu3@1j&Bm^lD`kYA8={z0CEZ zgv1Y_Xcb6F{ClV81xZSjO0tql1|f)3mB^%CK~yrIQEXE08dpMelCQWPDHn=Q{P0XZ z7^P5%;>3TM7)C)#KKJFw^o@~0aY{a;Kt&l)mQoLWHNjc3;txpr%YydHlv+bS{-Y`% z)#~AWgOfKlxV0#f@dI*V{DktBDx)Mb{$>bjI?E^$A5kn*k7CBMXr>;G-jH}^zKP{0 zMKt>pOJzm|DW=7;p=f62Vo}Y`L@d3LNwD~KCb77*$QJ*MQks>8#kNGYT0C1VE!$c- zmW{=?M7C$~Y>B3m;HB~iF)ooIjAaQ^Gc{tF8i`ECpb3#Kk-@Ht#kypsMl4fWRUpmT zxk$WAWkxuko}hRi?3-LiGWm^gg}1!r}*JDJL1Je zqMjg_6zSv(N`>aLz?qN{ z**7m9&v|*necdmi471cgaN{-hq&2}YY&aPbyOK4%P z9F2uI!j~{*b2+DKE7_3;uatKZrBHQNp;}t0+U#QWv|{y{#WvE4ZDbZ>+qQqE;r^e~a8J6Kl&V-~ zlPESAse+{3$Dg#RL+SSDdHtR$OICrCVJ3ma94fOP@d=T5BCg9Dhwfc3O0Ai5q4}Qy zLX_8qGm6^f?$R>dWp=FV(rG>ZWNtb5QD#@Rvsfr*NDJK0z`YYcEF}$mkx^t2MN%jv zDO=#PQ4!h4R>*=AUg05yfRUWX#js=J06F70jH-lDofk$`!|0E3Q?7|aYGK`4jK6cf zH_{;w7f{BqR6Ar)2^pA{pUuiQ(zewNJG0zaYqB6t{FEKCVeXJ!V^MYgc{NHoxbfG_ z0)q(n3(6@=jqa*6s`#5WeT2;0p7bTZ(+;9Lqx7;Uy-ayBuwoQ9JL$Ct!7!U0)Vwfd zl!Z`9n=HY)Tl$+IRBRrNtDk500DiJ~1I{Z8MwJbkB`4=iwipQ_Pd#vYMwijKPZR}m zy#|ql*}JO(%#@Kr9j?t^!=CSFHgqUQ{)#l8DLW}j!Td4Fxm^WmTZ_$rVIGnFx>jB* zlc}~c%C$?fO1mQMv{Q|CNiBXoNSW5GFprfTL}s}=*cIk0c*pw(mt4!Nacx?SWEP&W zYWZWzbiN*uIyGZLT#w9b*&H+Fv*$0BxE^IP!Kw)6(PiE}Bf~@bLq`e5d)5e+&2~O} zSB*n>SF2={7t*j*y!N`9U11z6&)zj+wKX2x-gU^lZh|lqrp#Ik#)eURLzPqxMnjK| zROP7+m7N3Z1|G6i2&(Z2>19+9a=L!R{OcQUpNahH5z?R4IPqES^E8WaT&XqIMW3yd z!h@hFylp&i3{eYet43>dj~j)7hRblSUO2B_Nk(rqCQwUTndiG!n@< zWP#<4#!VV2&9FqaO{5hCshZ&G%by6YZbJJ+SO%yl=zmg2`4XS%D(p1~BV!lB7s<8o zqbyXsiHM=YpSje3m{FEzt{i{r-3%5sy21^?y39p9VG&C4)<>Y8NI$W{I3GUN)i?HO z%2h_dv|*iTTno`aU$HC(!uxchs11P9_7&FhPnVU^^j*uzSl=)h3?_4Fh)f-XDw(;# zeTs&IHdel{m9gv6N15Bb8cqg$23;#>3?u$YqIKYf{WSFs^Hh_u_b#Q3eRnHfmpX;M z^8vK#5eB}RrMMI}|CrG%mdcu0oWICs7wUNPC^S@NUD)r1?!e33()FD^QDixJxdG#O z9r?!>^7kXIJUqb>t1TC^sbAXEVtPYGSNYu8nC%4c)4|15wjhi6Ah>08E)4KTYL9|m zPn8Ns*J(1HRN=*jiL_J9ZrV|1$ohE+Op-u2LWgF#N>42@db{o#E zi{jlOFHBvTH}!ro^x9rOg(8X@vG}u2A}Bs>sHbOXeW3Y=*L_t}ZuN~Me5sT(ij`~S zsRijqt}vLUuUUI%CXCL_dP>!h2pKy`nkz0950?3QaYkS9Tl!utIml(l-mpPzuF}+I zEsx1;R+Bq>GE*&WiyvOs%9-O~iHn^(J;2wm>uYb*%WX_62lMIvStD%U=T5x$dY~n&IB?Ssza)|9GK~zth z1<9iw$|wqvMv5=hkWMOdWy1!Zsf!AttdnBvFqX23A|R;=t;xqJfzZ{;RWQuZf0+|e zi*h5B8#?LrO<`HNSk_Q}62CfXceB{>@z__H+8MYt@}Rp0vN~A9Q-&B>&o-v* z<}y!lIV0CY57%HekA32|M`)%0j{Y=gBf0~w5JfTH?bN0zpA9guXb=*XZ}0^UcYNKa z;|P9eEl=YZ3`jm2XNc#je)P@s+MKXb7PZ z4|wCsxw?ilFJhz>vyk?YwfR0*Ca`P1`1ZHj=dL={ih~B@!2nap%xGwBKSX2;X_VJc z@{IVh*{IX@3Nx8^QGii|MT%37?H}ADy3(eN7ya>=-vO5Sp~zn{EAD&A7RT%&3BZ)L z!^e+kJxIjq;6Nl!v`AWR;?rmyV=rbE{iv3h2!l5RmjKcJI18U-dzsRH8>h08DOjZ< z5AIErb(Uky;dHIST0(vqX}v<&CBr2AnMacmY6%h_XCE+`1xRXsphz7KUgI5uEDccP zdjn4$lZ9hi#rTtY(1}*Q8eLKC8QB2Vo~54XP`aJ_PGrB!%714TaI4R%X${Xb0*u;~ z^lmESb9?%c_4)J?@jGWvqOO-&0=N_SoUlHKJU4CW_T$1iYCKqrtAVAjchN?o7245S>&YsvG#xOdS zEc2_ocl|W;t1O4$s-eX+ZiwHwcPZzuczvXsru4i?vsAHj->B{GW;9xUe{%=_ zPg{_^TDel}P5$YRBRMz3W|XZ3%-XlaTc&mRjB?q-lU4Axv6gm`qOn%I?WSP)b_1_r zXRD)xQ^Yi--CgRL%Cxh#J96{G*LPA_V!qaM4UN0M_4<9wQvhG?VJ`saAL@Z;EVy@a z=~dWe_4au`NU{6FOG8O3=^Q;_H%e*jQeGRSV7u=LIPS;pEc*{{{o4%*X4qX$KBy-mQGv znwcx*wQOgQ@e=SI59CI-bTz+Igr^yIa%c>>*eJ7vR9KmXmL*nsZXLPrJm3*I1_|9( zq@Xt(ptxwp)9G5*4yEtpKg5@abl4~kuie2Nb!C58yh8e$yTwh8- zXqkgh^W|D2*NPGP3mw|1z+ENu3q1*gP+VT)8*2Qnyv;J~3cKm%=h9SHr0-?6_bk`F zH(b~9mqNM#SB!4Lx^``ANcPAa++m~<`)jE>xs^FUz*r?wV|v?Ew)aXd(e0DN9;=_ zy22T{$Ra1>vN8MY=79`EAFUV+%uQi$Rhf z!XVZjvS*-gH+R5ZiYJmB7<+h4gx$ppybf++AjktUKH$-?Zp^4ZiR2jZLpbI^zT=U! zkn9Vj@fCDNkqBME(;$?OGSw{J_F+a`@!$YnWmdqi-%Vup-n|P{9WsOlzL?M07tt+t zk{qiri0+i9em06hOx($N5KKfAfj&=_z-{|B1a!8{&h~qp#Zyn@5Sb@dFaS!V)jKtezWn(Rw4aNih~s#RL$Kq*AoQs1)s}DHg`=MmJ1mJlW=v zCy7e;o#+J{`q?GPjknCHFd^1Rcnmc5)WLG;ca%a98K`bgqN znf}BGh#jLvT<+sXsP0ZB^8LP|KaSx)h#3Bj05Ed<1G#EBz6@6nFWw|Rc5Fc@$R_X? zA~S}EQ4bs^Moi?cAH`r0cRFynU{`i~c-P>cbq>VAGrCKLExrDI3Jd#C7h~fv7FR)X6%em&}5xsjAl`{ zZp*f9+qU_Z(bZ+!wrv|-wr$()F55OwefQ?xoSc*FmF#5y*}vAxnsdzY5U=z479+XQ zKx*}$!iCD?Avj7l)<2ZUKKkd~L_0p%dUFU;uee`ytDOF=N{jokU zEQX`?)xsD(e+sa4LV(Udvjjc4pjOtfraJrL{krJXa>j#@&2E(qEbWm{qx3zls1Q7> z8EiD%R}f{q8^GPY8YN*yD@V!LX-28m_RM5PWm@#IZfHJ|f6yA3a4&+C$pb+PD8`AJ zB)zrD5Z^dc5hN1L(}MOcD^6>hr6Jv$P+n_A2$3Z!FDM&^K;eSvP&(39C8ZzJo=D^M zz)rtv^L%r!NcY7rq`EdjyL`v0m&Kei#Y_~?i2Uxs2Fv{rVzhihz1Nj$4*`@sL5yQ& z>J^jpy=)j!4l#w`<-fM>{UHs!vhZuXfiID!_W4UEQMm$rhZl)YY%pMjG+jH@Pi4mH zJU_0ePg29d(`Zs0cnA+W7@On{Tb<)BaifFoaWfKRL*vYo#Pkrl|HVHNg(r^icKs(3 z^o0ryA(s%xz@FGgEFg{B_M+OWH&M};SD36Y!v!4;Iw0_#0MZD1H^(rNF%+w6^?0sn z|3=pd(}T9hCYSuA7^(uC$zucT4jkDIozz#w9VvJ>LMVL5JD(D|X&#$52{{+3|* z7etSYlp<@{zb*DB9j~aT>>$0qg4s)Ba2a+vDwp~tKcSu(bRvI;Po{ZiD`zetKkLIsDi*B*18bLC| zq_;;=ykVZ49;w~Vd9@Vx8_UPJ^tTXmC(W)h=Q_oqAIGb-=eaB}W%qNjpJkDs^xR_0 zs?qFxZe#RcKgbe!cRiF+B%Dx}H#%=gjKr`|IMJ88r0rk7R5YXr*f>%{U}?oKr6$;G z3kOsgHCr%>8=!^O($N;8xu66>9A&Xf12|<7&*fU%BI`W z^4&{A>|$BK&Iw|7=7_4%zFFJE|GhqNgwdrbj;v^|Zb@x93Qo<~RA=745%;I0K%@efD}7PJGFKNn2DKl4Q4`12XUTw<)f9#DG|e$$ zL@u-@u)@|ft|mr^GM4YvlLF9^*3p`2Mp)) z{F7-|nj8R?`N7W*;7OS6Dj+N+o&)Tts?dwxr18HLM}dn3LO9RTZYIa zG~W1<&zq&vF<#nc7CuwEt4X{PM5M3*YlRaanuYPu=r~5?@9Cb5oHs!V zK0=3eDhaKOYo224MXt6GV;cFwm zwGlS>YOYq*vJ4*Dp7}k^hYFyM%oI)Th%drZPWM1dQ@lpD5lMs;Stw~daP1sECvrcg z+X^+;*}Q)zAQzh<=>TU4L<(3!9|C_2^&7k`NuuoSPjBc>Z*_WLVuLY#HNEe7k#Fbe z6Wr9KIDtCI|0C}{<@5M*4f}ciep#@68);&Ua$Y&_&Z7Of;Q~adtE;ECzb&!(hW_1C zu{3c`^r32H6;nHrBGat=HSz16msr_V?CUFLlMtH$rp`;qHQ?}PBSN5s7A+&Z(hR9$V;HNG1QM83p=`1w}E)U;(R<9b^!e ztY75Llm%MrzHue?X9A$|Go-+i;Xw%K4uvA6G;oW=!MZQ{fu%mn zNC6@ob7oFee2b;`B@{WKRzyl(yHYG2?F0+OC$Yy-o!lJ!teJXZAWZGU@qa5vD8H2D8%y#XA?CTE<& zqu4hN45MW?yH?{x3)ts220x~=_cCYa!8!ccYo%eYCBA=N;7D$Hgm?tnACWn}4)zWk ze1dMe+1cEkieLYW-xE1@oyo$iF5D!{;+kqNJu)UrVyU{uO1MJ_k94YAb>8809`u@s zNh*MG)(8Kt8Kmn^N+oj68FXk({_w@?y4M*)j|EYuNz2yhLzAx>o2QbT3sXEr$|!*L z^md2^AUaIc5cC9x(affv)0+KTj~D=~BDy(V;`Ek`X&RrId56ZZY_I*jmKxgocm?g-L2pjdg%4C=?cG2k_c}l_i_N`(} z5yPUJhr2f%9Xl+^g51|KH-|7A4-+HDu9sc#N+=yiic2ZFhNmj(FUIfk74` zUYfs8<2I_)SNP(F_)q6HzQ{kAww)Zn?{M&>MAy~L#oqL;zKr$@DjuGlseN&>$K$B+ z{mNhY$xsM6!;fLhHz~vzqw^)SKc#ah^h>+1_Dfk{lbX(gFHcUz#84NOF^DG=%MlVH zqTDkz=)by3U4%bi8#MviHW}2P*aGbj1HbdCYOZ6A`6OnDMEw246|S`eWzE>jxQFhh zHX!Eh@S2Zw{kR8Q#jk_Q)<*>b{#Bo?H3Z?6IOW8Gej$ysmc+H@%c9^%v*wGl)&t%0 z((!MDu#4Up)ZIOdWDEa5;8%yB^(4 zt1A>iSfe+A@Rjp@zUqoiknGBQts~B1FkbsN3U7;xv2*?X{*kgF-$U!8sX2gHeNSP1 z*NI7K7Q$DP2jDzL6n?pS{ypzv<@aouMl){#Ub^NG30kUDo5ig#3((EIBq%oKaLT#P z!Ozw$GU4G8=>5U_th+6*t~h6@!sG@d&>Wd)!;opt*zQm=YvVeQ^J{V=&pFxY3=%x0 z7YDAs0$f{yudiJ$4zBAP{RK{vq;_jIYD5|iggpawHa}3Z)nVlQl7+BHb);V$MGI3+k;L=*>u1RLOMLfvw$f zFnVA>hNAQ48~U#jP~l!Nh`)H6mTCk)dFvo8U|bj`i&~RG=x%HLHYzABjcM{Jt8{w* z^XPU<_`a*p<>Z$3;0aOx?_~}iehwZg->=qj7gXfF1iMF__&%Ob=~Yx(>A+-ciUhAi z@_T#Um=2ise%^Yqf)1*7<4*3Yz;;7q&L%Lpi{u)Uk?z5xD~I#peuMjs^%m3!XpKAs zMg+v%yvtnt9bA8W2u-I+Dbq-6LxeP$nZCeR`IsP`{P?rY*y<3BF!nw)5D5UEVxV-KB-(ll*sIHc3-jIeXDIPVD zwvc(0M!kf)qN`R4HDc5_!{+D*_!9$mHhHp9tG8r$nYCYiu)F+ee+|!!?_`Nvy_Vj} zmkDY4Hu_|(AXVJ3RFdOAy0*RRy*%6v%xFouX(gDf!i;hv#bVF7*>|!>EV*sS1t`wB zifN>_l&H~3mchPF?$>}o?CN=#$jL<;2tESYFYEgDxu7zPG0Y6iCdZ22k21NO_qm+u z@j8BSIb(RdBi1wmd&^$saJC*Cj;`3(q~a4BKL!gBRgn&Lfu z?(zouw&k(=!cd02pCx(HLCl#);LfYA2MvCL`4Umn%i_fDsKChr2?UUjiM#U%w)6c% z$z4@|n zpaARPV?~Wgoo&60{CjlQ2YC$Z?qgu!xFMOqSC>ez7G}LG^iD_=RL@f)Qg4 zs~*Euh_`1grpVCAhC4?0O4k_axR$-?tsLHNv8Gbgbv7#cUEMBgZms~VgJm&1{r;`1 z$wZ^;^Sz~ruS7j&OS4&~rA}8DOtNb@T|)fkmzD~gX4e61lu;CtF+aX}3k!>(}`P@#WJAlP>L#A*6)PZYYjcBc?295pA8YC;SYgnA8^y zjV(-tlX4+tVC9+rKn?6mVbl%(*YnYjeK`sibm_{XDLTZ2W^iuY@S+HU<(`L_TRko)bK+rU4R8Ac)e zLwcyPc#497{og;LQus)2GL(cUSXezmJNa+a>K^PG9ww`3V9o5zgbEe5l3{N&f+jt z;J$v~qK+JIVmpfkj|ZO3z+dPo3F67Fk3sG3Av@`kJ*OWah_nk}YPy9&X)5=>?r2P= zp$pi1HhrTvtgNT$!q4DwE}!0?@#Eh^k4CI}1&P7Qz%f-IrH`gu$odPJ)y&j(7L&c*bc{Nz8j_z6u_R?}HXD#%^L2B-SXy=NazgSdchZ&6_8%2^huiNYjm zBBzGYV5N&bwBpgGB;UlD$Ug5ZEDZXGvkxP{t69PC{^+B)>ce^S-G!ET&8hJCjoe$* z26cqp=z3}h4S5t-qHF^qv>#T44_}RwyPcYDZKH7qnA$-3F4gI3Sdb&pn9o zMH?kJvnRpDrTINVux;*8A>JPLEUnvVA{ogG0h zVqMy@QsJG*8<4*$)KMqKDfBV#d#mrBE1IWS-byhsr51eZ5Yo{}E=*O;3`wf9)XqvT zoc=UYZ_1ZL9*5}2SG9w{?KrW6lRF0BKqZ#_V$Y;#Jh^y-HXEq&FlbTEqZoMezxdZ+ z=YChRj#PlCp*>E6Gdu2tsmd5Gxn$56Dogz$!~T;dZTtT0V5;q+E5m zMxAcd>*49#z$g%jDP@)gAy-5x#m!&5x~Ss0vOUaN^!1jA_ARK=;Jq&FLvc8y=glj= zp1E}kt&D)EbSNhM0cCOAOQ55RXaC1NbZN41@fdP6c`S~%{b;K)3F9$6Pi&%ICc%S2 zbppJoi_c2g?*w?u&jLie7|iqUcy~Ovu6=A;807449Qu*U7l`ju#ut#&(KO7kV^eBY zVIK|hM_O;x<*2{2j1wsh(BpE7+vsGUGTRq{rsWuNVcmrL+c9jcX~0`jyLd;O37)t6 zU*iO3MT{ezpUvdeEhrH*gmM_L2@$HirIzw^@`pTcx6a=o2|-)StBptZoA)KR8K^t& zho`sY>j?WgzG^O&oUh{9$GCbXGJKNf4;MS7n^C4Lr5}lO4zC|K`i#{;K5OIMf5ANh zdJHH&A@mqx5q=x0O&sTB3*c@e$I-}VqFkh3zg2P&u0@ca@=dtwj{=w-wfnqq=*~fp zdbxPH1#PZ$@Uro6jgnGx$EM8?%&1?7)7&G{ruUCBureMPBTyjCKw2$MZ#NvD$W->Z z$9bX=N8=rlVvM|FWIlKtmGJ*J_al^a~ws68jV>RBWXu#IF!8Dad-)VxLlm*G|XcOa85!x+&;S=tvIDPK~Zr@l?LUxbvVF+lZbc>N75g*e*5zdklJEA34n1%yd(Zpx|9w@%!r^2&$9ETV z9|*N?SxikVy-{RSMmV|-7_8uqA1@8V7$^^F-5GjXo(1G6)!vRr!-=krW}Tz)_=2~K zfU7QPSXAGejOi|J;Y{yE17`AF&@NJoVmI%#@p-@kpM+_GP{uVcHz+L(t}U-Jm77w_ivsR8n6t~SQok|94>MYCh4ox+f0pE-vu+MVs z$21dZ!gdVV%zZ614=}RcsfpytKamWWI9?GolcI%50K%nETj@vBpsQu556-{p1S9p7 ziQ2p0W^D6%JK`mf5&=So7yy+eOkYerliy3>=CEVRe$)SNwX z1*JK7xr!|k1*`YhC-xe>R|hqJZp#FLcj2+LmFQB94yE;y^IEUp?iT_Ue z`ScRVVbvh>NU|{Q6#bLvdvO3!GejaNJi+^75knP0=;jFQJav|wQkR75;)8S z%iVCQo}W#637Z^FHW#ih;aM-{*j#tCc#)q2!i`3sz(&>)H@6{QQo(8QXrbi=!>h<1 zH0AcFHbwGT(gS8%Ae1)OI4K{*h?+vRD$?txIEVzm;W45*Vr=W)bdMMsl zCh{US4vJtl-?mt6bXUCn;SVW}Q2fcgxeqyxF#Ji7`8PR^aQuH{w>)Nsm^Zzhy^Pff zGYrwl5?5XEie%S*<)g`p3leSYTpSHXW#ApX7XNS#9gFWLF&PnjEpqK};t=3qwW3mQzAycbloe<> za^ye{9#r5Q9IbzeV>&9ho}7#siH7+>v45c&Xf~#6nI}}M=7wjH#7l4%2dgOZ%*AGK z?Gdx<6`*36pV_MRJ3xx}Nija?hq3i>c?XSgDQT@Gj7qy_RnZ|Nz0kl|WSnliOYe=W zqxy&*MyOIZmUfA6ss=FHmMu;FfySQ`9qkB^A0<+F;P(E*x6B191rV?X@JGpD+3)v+ z)lj<*-F%3~4L78S$BjwGg^J}upi64O{i)NTUym6^0KA+{4aBC0v>?;wF#>EZB!i9s zb&rb=DgC9rS?wFDOLjcis|ZW{Ao03xj104vonY;hg#2*r+7dBYfR)UzmyW7;go?nI zoCt+VVtA7L92-{md(NjXd1vzqI>&`8!h`u-iS)jrEd}=mQiT?kp1X~p6*2F+9Lw7f zSLeSgvhi33i_hD8{trHl#k8!~nDkJ>P@kD|4y&kx7f`>G z%xH-z^wuCO4(@q-^}2RC?`W9)FYr4j=o}7DvV->GZD2p=u|mtJq9T^`W%G- z<)90R9iJmExly%A0D%zX)zkUB|GIniTA9PW!lhR3dOJUv&6t{t3#FGI;2)O*L_Jo7J^xKI*(>PuS&19w zM+AQ2w}tI*tNhiW(kE6Y4KB9=co;h9kC&GH#Cpm`X^2K(&gW6OVEvHqvd8e?r7b5! zn`oOpZAFmcsqa=yAJ|DwJQ)_A zR>$;$p?hdJWRjq98Ing|2MNLd_b4T-6Xb!_(2&muKN%DsjC!{h`N%<8&J++jgWpV|MJoL2)r-y)A0< zRJZfuzh^=HM}X*h5XKD}+>F*>d86}{$p?4oZkqO#wA`%j?1BwN7tl6J@N-ncV27*c zqX83DA2&1ToW4E|-wSIng;97`EU(zJn!@~`exFAFO(+)6r)aeqTRxFqv4jpZmpB7l0cf2I(l#6?p6kHm#3`H>*vpSUqT#FVgRCc$x zY7CdO2a}%udk>~Ryc7hDXE(5TuHBTg0FN9qpkiW<(i~SK@@d19R`lB(46UV3emM~J zM3JAAGg3^hcx)6`uc7yXOZ5R8kpU^g2Szp7!6Dwck$?4?md1=rOeJ>_hN66M1IWuO zArjbWqQb#Jc4(?^$zq;NVN-u2lF#mE7++x5bm-TYxf-EwP0d|XaZ=UC06;g#*aCl> zWmqFlXIq=0EX(pJr*`0vQMTqd-fi3&8Infk%~FbpYDQ6i{2p84%uO(<7!8?4ii4V@ zxBW$wY|)v<8u7IUNrHk9*q^(G#6P_8b?irtER)%hC5+g|iGPF_5lm0Yg!|Ety`}gJ z_K4>Xfm;;-F$9ygN_k-c%coT|)v+bkE=QMEWdeDV_!o9O)M+S(*w!n>66ybf+yoRS zw)zDgLKqp3ZYp+4j5>41cKJmBQ%Vr#e@nXPaaRjUn?R+<@Lhn6d{3;r!fCLOI-0^u z`<$)nspL^g+p?JEsN67j*O(y00BC$2!ABc5X@;^KN_>_1?Ww3%W|J8`TFRKh(#}Rs zlbK_0HCing2n_)&%12QXEDWNjYwBNhyf3`+p(iknP zXSh&X1A|{PdEQ#3a9>IX16$$$8em~z#+eiA>u#2)brZ;gq-mFekr7Mw$$9(D|BT@8 z%eRn)Bzlv4U>T3+ytN}RR;T~Y#@k*%Kg~W3n6%1OVuP@q#pB{8NUV#P1%K7|Xl_7x zQs${Gle!{zkzsggV-9zrie2(2Mj{4q;wEg@A_)TKC1q&~fjx2`U$b2$nljGPsmu+!zI0s3+mlNkG5qO0*c3P{Du2~4W-)9&)=Db8 zC#7DJNtw5c(}Sv+@3DpkUU$Qa`r&u$hiaCijU+P+~2NuA`$Ok&`X78d0-UK@@DMA5)rdt4z{feC;(@dFv8|2c3C( z(wHcgC{Gy?1^24%REo{dIu&W=vM`pp{&V~*^HK^Hxy-$pI|W;kvdD5Y9Qc_Q+&V*tnmi)rDUbM!WeHHfPTg(n88pG=!#yoY zPXs30{p5$Bd({DO}H*;TnN|Uo_%9~61H=X`%3^=@YZ**lnQp`{}bc^z|M9KBA zxAPRtb!9Q{8$l@Quxz9lWgT0bO%S-|7_*M8y1bQsgB)Y_VHh46R6 zC?~$~Z+)TgK7G7T`4fnt;j!O<$|Vwq9M5+5 zGS9ZeY@Q(PO^5iv_6^Unuh}%5>ntIhE5zJk6v-S*-!=CqS}92GPQT{t#WJ_$Mn#<; zW0WDvSLC}*k1gT=PAzJgdDZic<*RAg*K=iqm#dv`6~&N&GI$cV)erp*>+(IqxQ|iD zl~+>YdFSHbrOd;-J}0h57)uggRQq1_-R-L>}**WL!2Z?9`vSTrm{z&` zb1eDQaGss3MSg2rRPm4aeTnV~es6-ln!XYz)HpSGqaDz>kqHgL#gV-{F$1Kjn2*we z7slAf;WWs&dym82{kccyW8Q6N6#a=b-?}&C;wa)6<|2tr0LH zqPAU4uw^9czJh6p@#;rFPrpil^@p^d@6?)Qv(`bv(+h6=^{T-O^A4o)SF`=bW5w%x+~#hQdA zHK8PgsEKu~r1z+8#*KLR}sQMQKo`Vb08Un*9`bFnf6@ z8M8O{^>PRU#D6*P5t`s92aDiouvHA?4qze2nJ$IZk*P@YoD=M{T_e;|2yNw50tGX` zrPGgQ#!L&F8xm47FUdb_8Q6IVx^!v#%1XVV)|PojrSXwc6>Q#-Syq54}oCV>(dKiBT=9- zgo!(%3OQ^5be);|Q8AT2IFfi$wu5DEHvM_beo`9o!>y+-5H-`5l!&e&VxYE=sqOZc zb!cX|nq*ZwDNL^@CgFog#I1`zY6pCwt|NkHTPPCN*wktpj_@A@TMK6J2l`}^_RW9# zYrT03^0uJSs5NrnDK!FPL8;Vz)zFZYu$`O5LL%B_uqx>?&DXEtp|#1H;rR%6&jEPtn8VNVe6`=i;q1T@y3Im!R%6<>ec^fdG2@8g}~H8Ik_6L6=9k*KsI4`t|) zwLf*7yO&V;^~G<=mZ0?653n+_x0gdhiG4)I;Pjm=NI_GF3AO<#`gDUM2J7R{GBRuD z|3T!Mu)nu;VILU>t2ZDav9d8}cw6)P(^0iJC=lAktKu5PqU$D(==QhKp^e-2^c%DP zeF1UyVxZx@>M;BbYykuJpM-Z+PeXS^3i0##nneQs0{W^|u2!|uQ>(CAzVqyEQLiNZ z)~Ku!yz}$J{JP%P?2Uo6_le`%Bvp7GTjalU{&~ebJe^@=V9tie$;8*o&YIHMlVxb_ zm_myz?6OW=kYYi2F`(=~7;vaOzm33avRf2pip`N_a>@c^Kk8!{wO&4d-ts5o?@yst zo=|fBD42^3xR;diI5&Eh7D{0pgculRW08yZ^MlO5;)C@A4Uiqt?dJ0>4_voAjEby4 zG0)7F#sG%TKgEn0gj_vcw%=jX`)Qc9H)bkL$MF|-Ce_w4utqzN77=ZK@Qs8En6bFz zg6lES+j7g7vvad2EdieVU9~SBmHjV#>plhNka@+CQ@-A*G`@fNyRwxbH*LSiWDuSj z=bh^EfM`@NRD=mGd-&FZz+LY4g;hWV9Bb!}$ozApTGGM=<2ebt@n5>VDg(zrqEJ5y z`xnlnz-hJKWzWkzd;zzP2w!fEF7|IKI)lCUkV(MO64aXE@mj=^J9yb!OJ+pmzvTCg zDlFt`B~%NJW;~vnlu*e$Pk^FiUUo$3On!}uGllYZ)KVzJU9n$O>2hJd#1)Alp7u*B z7lf%g0B@YUE}2N&@(Jbk>0BA5X?HbPdp=;(dU4tKFujD$FVo#v)+$u@Q7gP6d^%N} zZa*FrtX0UK_Vvm_YNf+C$y6U9l`dJaopsX9gV!QsaE)y&z(bY zP4{4$k+49yNgygqFc*8Zzu-yzi^^$!9J#QDFIC>85>3k~|5du2M140AVA9F;XA)EMR|2VE;e_4k7xqC^p7!?vNZhZOmWxd%|++@HTFg zQV`cYccEhZW|OH6A7^l~CVg%bZR~KBNaP_Ph6Fv186PQ~ts#A7%UC7*OpBCxEi=z) z!fjcmxZ`*2IeUWs8_}X?^I};mFFgHffuDj7m~M7)WMlWGDoiLKr!g@Lkdn5QUF^u$ zxMDSWIMACL_Xf5?&1>I3rI!F*pHORUupMO_D8(0-Cg&chE(LOfFsNy zpQbKi0P}bb=V^>ha!M{r7~bY&81dr{#Z9L))C@{VA-hBaLVl_#`TNIPofcTM82fR& z387OL2{$p>S>0e5Y!*}1m;J_X8nnV&pDqapkbqP=CeZS9-oMU(%{lzOrk!#GULCfl zQL2>q)!)BTDGpuc!k#1&CHh$`I&<8_sy5wq44CF1$?=I|M9hJ|az}eQmn?y8)~%Yy z2D3e#eC;dTw{>!@&}b178U}28j4?t|4t3UT;4yNn#{4O^6$gC&SoCBJ$11m`oXP4%{#4ae)8l zuKW$)1>sKUVW&EsY!{FOS61N1HA*(siVyP+(zx9ZE3^p&J zJ3IY8S%j*BD>1@T*T86T7mBr4OAn`*TmkAO*!UMvIrRAU1~Ng&*Eij39>ZL5WwlF1}U*2@V2?ZSXrs?x{*0rm_aVEv>* z;X^sq_ovq+XLM9n*?Td9TNeVs^Nz14`Qc01ajL3;>S-O{fa?Tohe(Q%?iF=PTvQtn ziJEmnP7nrG#$NEWc6qQoE@sCGSx1LaeC-xSLxpsU3x&I*mlms}nlU03i9VFJM+~dp zt}aupd2ClX30BFIIT7+{oWqQih4I;EpLBtTHjg30ATfIlOZD)y@i=E^bAFJy8HQxR zP5w@9WTyy& z;O^qJv$6Sm)u1mvho2<@j_>(cQUxsDI!3p<52Fp-tSw` zcNSAO_iv=DhF6<*B0OsVXpgkOw1{dIa3MkPi|_u^r>$;(!uK6XLx}mZVFP`Xa>9x5 zEn!c!Z3a`YolF4yF8DgIfZ)I#2}bz7*wtL&%G2AGT2psjKHiJXxPe)m@JKe5CYOQ; zQzY&n5mLoYR=T$D{m~=t@pMuv+MKRy0lrPIhmk9d`m!Az3Rl#&m|bYpiLEkl>->0Z z%KiM=fC%rvx9&b6aB5r);#SA(pb0zj%TYyjOgk$C_@gp?ZdTW z&tt7}CPcYMBXP>Y4>of~^FHO8jra%fpuE|OvMX101yh?fG0Nnf1|LKn1q^Et@Ihcj zUm^WJ5l+JojQ@#nhAPa9=l2Pwszj~nDi83^b)-43C=-r>|>x}y)nAu z?U-S?3)f&J^dbp`^LlUVFUZ>2{(gR?ZO`)7c&n=u12D{H)p=b1;LP<3MF37SF5=DY z?zLhWXB^25Jgyi|{xoNe%*6F6mmW7)d(VW_@z@FpZetXVKk=l42&!Rooc+wrs+LwK z2wfsGv9plBIGsw(=3ibxEBFf9f-$f4Z&A zI?>L6b%QWP$7O& zSFKC*+w;5jbO#LUf_4@0JwIT$?|OQF%!kg77g$P&a@+a{UX^C0`+;auikjWPf8uew zSbg@%p(HpdKOS)&NH9o43iox66MchnF11rz^=1wFp>rn_O^ z-v>}i_9hly5uQ`@2)*|%hlVH_I7oY6sf*2;0-M4pKm#zO?g$@MDh1W|y+9eO@#Qvm zITS_i?tSlvuMT%Za;l>%+p+o;5k`5?%fVW;6SBDeEJ+Ql$t_v6o6XvN_;J}-)2w1dpEIKV*MjzzxqSv;k&)0}xBL`rH%WSrQZ6Ouzuidt<~@sIs99JiFT=BK$s$Fs+Rzdm298ZhN< z-{t1szHMyhR*aw8F*p-@=TiznK?yRhQhZ#S85UMwW>QHa8oS>Z!xehb*KJoQAxXhx z~A1@e- zamF2FiQTNc?B)lca!>JG6d59mx>?J{)w*I*eFu3OxCT7GH|Z)G6-0PGJUDy0tM%QoFg^f9#u$7;F>vke-CS|JpCLcWkQ_C?6$(NKI)& zmQUg5+ECbmOk8Lv+JzDrt^?aa)eO`QE>*>#sAv3#o7JvB1uTl9AKUQIUVx%E`14LFce764Dt@={AsGG=&i~m&OKAyf3C6vtt5z{OS>{w}wJ@)auG|MD<{ zpu*!RTfGy|}pW`P>nDs`|;0Kr^#<}OY|t*&D*$>TNtJ<#-WaC1;4 zzSRSZ)q07!^nio&YFvGLpF$^O`@PZ~R|0}+&|ox&!H{Vt=@I?%49nIvU13hp&deBF zLBVz3p9WfHbT`t_5V{BwD%$Y!?WMC-p#~9^2(yReV5mm97cXo$EHgxWFw_CS(;nZm zk^o?tO_i(I&k>7Lq*KaslKyBY96P_oWUHWAZ0^A^ee?pq4X_k(VE~F-C=#BKbB%=I zzW?E2PesFwixl?Pf@FkU@B6|lOp3W^Yss{$)}hp2zj|dSf#f+Y2f%xLi5g}H?a>$ znH{`K`hSG$7%#nQ3)`^H+f`@57?qbzw1qI?{3pW`^H`^$e{hb{ipo~Qd2x$35|Dds zQMZy<`TnM`PzW0|I>9y%A%=zG6mdehwzlTWo4eIpp84an{c^xBBe=f3rRYRGBp)+u zm|qz6c)qKn40xalVs(dG-F}SHJF9pENumeiDi^iGxflv?E^A$g6lBW#E?1R zD$zMzPzt!*9tdM)fFFmaL?I3Gy_N7#FFIwAT%|}HyEJjl=C|)9pGRjG^#aFfjHAw@ z0s2D(oM?pk0^x7)7glge+B>sCy3CY5??k4z{uDI~LC{7mG^U+Ks`sUJwfg=!JmZil zjhhC=#NOm7RATfv36ieuAkzVb{i>35YiCU0SMpOhe^)FPUg1V;4s3*OlDZQhBNh;Q zkA^s;v2j+>V02o%2_2alKrZ7REo)4=y;n@v`hxOWze+Q$U38Aa$?WqCN?jJ9hYg|7 z8(5vdy3VBi%U1(5#tK8mueNu6+k^ntT}|{S%-8wX7xZ;eLyC!&NQ9FV>1mKBg)ZEA z0nb-lV}&7n1htwwKcDaW8<~4&=H?8e>g{K(ou1cpYi;4ZMT*(Vt?(_0EJy_y33a}? zO=%pb*OZd1G^IDHU){@ai3?;0iS6)>vSYqFxjpdbz)C{0+8;z;J(fr91v``LO z*0)?(V+RW)9by`+xaep;pME66>zlHl=>SwH%mdJYEJy=*c{Q+<1z=Ud^mqf-;Odmz zv^8m=E*O9bkq=^A^AGwqRnuyW)M;M)I`fEERk+dc3R>U^0O>WS|GG2jwsNKppzswUw040CUfMg z?V4F!#CU<0Sx1CKXk^WyC*)hbwI;xVw%WE<*CwXrYGg_xb`nBT1G*?j?Q3BmOKQYNxZ#H2a zG;PM=(Y)Tgn{JOk=w%!xsrg%a0-8=MANen6;QDa6$A+*Lc~yiW-h~@}m#1NHQWpBc zo|~rp>SEltGD@_6z})$^4q8$7tj9WZiEO&Y0+e}3bN3{ediFHBgIB6#m69nLy-hc= zQN3j>ZsuW%L$8rI%o%ygze(8RAcpoBG!8~^zE4i{e+ZY7GuaL;gii=*R>xsJUWVW>d?<&S4iZlPg%I`g|5;KitgWCt>V zTl=qd-SeOpLf?J4C~bA^1?=o@@LQ6LboTeG1hu=)vI68J{nN(6r^D(YnFcsSAMZHC zWK-hX5E@P-8u!K(oBtu#?`D%T0P%gtCsKLg%FzyYYp9CJwaZ z@W#)$6dl!M?|x+DQwElwU$Z=Y3=9ai)Iq4o!%XX*NQ+Z9Tcvc`rfVb}SeX1pfgjaD z+ipfNWmlL`oli0Ek`E+9+a74|>TauR9Q)+R6vp`b)9USOQZsuKvESGU+0 zPygkZ2vwg^8mP(iH!Bn0v(-cnWm9`$j3Sj0zkv)z+A_R`8Ky819|W>`xEK$2J+Ml9 z!r2CN48mGkgGkQ3?%!TQz+XKPJEV<1Z@oKNU5nv>Xo7i5hjy=5E`z zZJWDo+qP}nwr$(mZQHip)8DygZYF1LGRY+MXQh5rQdOy}wd#4^_so?55Q|J;h>TGf zh}#sQ^?8_h7ARXQZ%B$7{&FDRv+%~<&h-!jq)$VOUs<+^9FDstkiZ6qzkq%W#l05# zi&jC~40bO}du0G=q<~9o;>0C?Pki%s`C6`nJUqZ3Op_rg%FGZ>_4L{1=TGA6C-ICK z8Gq(#zO|m2{M7wiI7BE~=>jsRYdo9LeM;=1| z2frKE;FXwv<5*~*O;`h`~C1$I!OajN5a8 z2LYV+Yoz6zmgndrHBSeY5@uOr0XebqY1=NrcqG>AggiKW^i4wL&I z_XXyUH1|!dcY`T3KXROgX??$Gu!YnEFxEYvdi~3zo#c_b6V+w@oI9JMeV`wn$`n1$ z@zUYW8faSLFwTs=&WV4>NFD-5Bv2T^sB_50q>D30AnS*;rp_6+?2uH&J;bMqip!fO z#;-wC$f#*>)(MiwOTAd&Rx*2c<@tCnRzr1959DyP;crSMHVm`~_7VOu=xxbE z^2WJ`G}Qev_F(Bp`>Nmn&DhTkZ19AZPDUazlN7t&O_fj3I*aw*p>-7yExfsGUeE9; z49xIdAC4uMnA*bSy7*@_fgtsln?N3~+UDS9Uq;66gU%a|&Eoh3B>m#`JUqpwU)tP4 z=e2a>kk6(PDRf+B86q5aXgl;xJiP}r2k)N zy;e0t&qR`2%rb@C)Bl;QZ~1?b^*tpGM7YWsT}zFIJr}j_q%$(qe^2CJ+*~e^iAF)Y zO8Xml^}Zt;6CV^|A@!rAH9QDgSML?>BkArC=`u(EF)=Wn=^~QAPJ`Gi%pbHLUH&Z@ zahw;C-X3!OA5^_q?YNwy#l=%=Hnuw1HTLyEqF}FE5Hpn#i+6*9)2|mR4G^w0;eP+w zduZxa)YJ$S@8BYE!wBq~+!^UM)U<#k!_MQ+cFNb?PuHcL_Fp`G_3QuS>7Dido2QTS zPPnQ^+~umIIEDIsnBais!URu3guR3i=4Wx4DNA<2 zN!}n7jC5t%;2sysDw9OL$;c{(nVnnZxSMix_rF~R4pPMz-(p;2r2rmldI<&CeawAM zkh6i)n%TkQiypLca58rGlzow0asS;ALOi6o;&Vi%19A8WA7j=+&8a?__?Vvsr-(P* zkEf$au8;p#+z7dR4#{%0KakQ$z4n_v7xh8RR|5ToP6~p%jVVgrzSAcYHdI0v2-ODIT*GrKLaci}HGI?W?F>O3JOA%MNa2};OWj<+|K9N=L zl~Vpk)tm&J4|ZT2-{+U6ufAz7<1%*+tpBtjw$JgE4ydP;rsEo5XHP1>Z6mrgic<1e z8_zdpeo4x8d7UV;S5B&p>+s%*R-){ku+5$m_Vq_g$3+JPO8ywZatW04-E+NDZV`zN z>xt?j!sVcW4ycc()!Ea;7mLZoKN?A;cx*}>oE)QZ!54Koe|IKxMTr*sf&jPe+l?@& zCnl2R2KFAVY`a?HpKU z#5(d~QI1olGNo#Yq-wT4Kc6<6sn%uwq;g6CX=zRCE?d*VZ%$?oPhxApu=lN?%uZpZ z&);cERhq+uR-fYi#M&6)6^>;cBC`)#F9NVhV=)pX^Yy~iB zx7DapkY0h0+$z|k-uG`V+~E@iWvxt^7CH!Mi= zXLXtnK7kiM!ZXt4O;p;2mu82Uk@L(Uq#@*92SNW zq)wLEFN|yK;OV9w(F!QTySCq&vlIz{G`afK;-H4tNpy5TAZhE!M96D#=cAggy0;vz zj9wXcuRpBcXHFB%~<|W{c?kNQNc=jy?51T0iE}RHFG}EO@a?0dW zpu674)gfB5q2H?!UU2E9Uq~&J(8k_>%>wD*aDUg+clz}7PrGXC-=8pQb(iH3XVD-h z=$1TEP$h2F8+|EyvdLyDd|*8I6mpt#>5~s7lseI|gl@H}Wh-*AcH@+5H+0>V!KTMx zK&tE~O&58!b{cqor!U7}zAJL+dr~TN*L^Z0UoKL7iBIae4%OIN$d)t{Y^MT-`Fwc_ z(7Yk?%#IVPc3Hiq;K#5s?W|g-a<*?yUn4yFcN40wgDGapX$(ugxh0Xt{0%4Ig^>y# z90i<5tLFn_wvYU9^edp+%>{u`_LkX(0SRz~y760qkKT zX!`JS{|henT7u`jMwU9X*t}C~{dp4+?fjadqu=fopm1-{v9lxg@yr6i;{sHO`^!}D zBa-6ld;G4tt@X_hIs4Pa1fX5^?Of^?u9paz*4c6z-i`$v<4}$_n4>6IoV+m5+rHWV zU6Qz8E>JIk;LU7K;5YyXtgHcV0bP3DkS!KxnP_TX(}GNCDGV z3FS)Mr{zf?wJ~S?!X~88SZo|e*758~{e=!&CI6>z-F1dPLQ7381tt}BE>m;f@eXMe z8BBy0c{AuHA{Z3$CVzq}-*WaFGKX`R3h_E9G=R*DD7Aui3~b?VLbe{Wd}To%0+)NR zS$VvI^_S5r!`S7>?%$aiXE!M>2e~!%5b-f*UIVQY3|_;b=P86lV1a02p*Nnji*C2t ztDx>Aol5si&%fCTOf)s|jZTQ{Fc?4-e!HJ-J5Nelf?e~GrIn$rH;@Fa7f6OXp za<42w0V%E9ayZ3f@7&g8wHaSiD*)+9ZpsH5^`u9>3d($j;NpDh@$*Mm5lgKMZvpfy>R=yBas)-gvn3y&dOn^%5ldo(cFrlD z#KFa9i!A9u@>?sHCvXWatoV1@?%3A67dYw&x=p#?hcONv6aX2&uWMLWY@O>RSnl^28&RyaBy=N*1dnF8Z3sn}zAv!XL3W0$J=`af~z1h?&}r>gv+cOJY7eMz8gF?@Vzu(_pY zE96tC38_nD`)JF^KT; zH<`ei7zAfMFo4UiNs3Vud^`P!7Iatg?89hrQ%KN`=oYlQ`>%pLnvn`i(@ijoQM4?U z1#p17A;h%3GpN5hy}e&p9eekpGT*&us5XU1(hDq7+j(4&xVOZu_{Wd!yj`1+^o#;> z6KB_N?z~7KGF9pLw*`8v;Lum}NJDS2V5MvL*KHUJ0-po_#(?_A(f|YE;{gL`Wu}1y z*jSka#2p^6LV84X1!w6_xZLuN=a81}v1W`CAw?2lJ7_jj`aN>ciG{or2t0}B%tJRK zH^zM<(b0g7>RimeO{J{V5EAplX73MO+eM8JZrpZ;C)xV?mISr?gaMdf4^M-iHL z$16R#7EXnh79mA&HdvoC@xS$bfF)||t%g98-pUYM20QU>X5cJ$2`C-W$WdAa#=RW&!0jCVNfN zt^-rtRRp`YpqZJF4GOqlh#36@Uc(jrypdg`IU&=SYP`x0k6cbLj$-h;Ito{?Q==6a zdh-3wU>We>u~GlGDq*fxUKB8CYr~nTZOh!V?Nsq*PEu-<(`8@L6>~3|Vb@fog~9!{ z`x)0KV9t$>f$cxW(PlsINUE>~1#o8z6)-!o@rvm$;Hx>US{OJY;zfn`4~j_}L9mBo zmDnLHTC`WzoW=mrwvRRS6|Cg67x=0#I4k2wFowknH_)G|%Z=D1HGt6+XN_rmm8``8 zCO|mkPv5GDgOv#FjAm;Szmm+#Fn~H{6m?f$!lY zDa3$a?!l^131A66K0_ZQiU;ipJBVC-Edf>w$8og7qVbt;$cl(@q2XF<5imoMkMSuJ zN?5+1R044_*Eb9#WGL4HySVoK% z0FfaxSN_GiOj*a&rDIgNK3E{ms#L4u8iqApiI<*0leJGHv_UZx!I__b_8&PjU~2x5 z=fmkglgM+1X7OFwg_{up?(tnFWyJXqai}p6Cn_O3U^U||KYFDoku59W15C^&QHw*j zr}qZE&dZy801CtgjpB)j(bYl4$%3kvk)|VFjBR5vUciB18S_WH?DLhN7p(6A|rPM62IsD?lm%vlqGqYjA%5je2ZgWM6A9*k7l0KeNa!c)Emp@i1380Kl!ik$EO`(K7jg-0 z(?%Rs(_Tm~QV^mPSF7o?NKW=pxe`(En#lxYnwtJfne9tp5|4(K=dH240%S@|nW2ce z5&LD0N$Bt8$TjFv^Vhj*51eYi1Xj|$(6+ZZdVTG-t%}do{#|1bID;E&Ky8ZP4gGO3 zh}iw#GRP277+!A0iM0vBbXOc?>?yK z7s}3UWkg5)S(#Wv$ovc@1(*6)_)>bAh#-+STck)BpA;lxJEm^=iBF(cW>I z&LgOz#S_yO(I6(X7cWDm>AUmd2|$OkEGjmeN-ip|SmBAbn9U~v62d@mfKxtc0h8zx z{KxUT|KnH875&GrIC219A%pu3MvHRg2k{^VtD9e<`O`ZHoI!h8+IDxbk8oZ~7N4pL z>fg{{uQNnI8+4)aqQhzIO26BF^NhnB6SK<1d&g7E4F@sHZ-KOC5J8r1qD|>s)xwps z#3G~M7(z(TqLUee%UNVP!K>MFW=6Byg&@Btlin%4fD!B=NLUjH0O8?;PO0kQa{|xIlV_)Wl;gHqM z#{TIzvtt%xJuK#P+r*EkOW4?TW!AHx`^yQZwV#sD3W#55YmQkfcCZ(zq@qu!DR!IG zW;eWFJS?F~;>I(JnGB^&ND1TGrZ-+Qs?&EI5nZhl*~u6=(oSQcV3nJ963W~WQrsiOzJpt&p_sTz8^*tlw@GxRv%bkIE!@+n$Bon zX+Cvir7%e}f}i@EZ{`U`mU{B1l6FSbcJo^qykV&X6%euKsP$ovC5%=w+eR?EKNT0U zav=S)0z@^U=Ap~yalesjibpzCnBEV}-TS0$DE^^CMZ>d2fr`Zfv;EV9!XxU_?P&VUvB z+cTqoUEB>M3Z&s06X@D=aS2Kwr5{14qc0rv&fJr(O;N^EsFB?w(ItDc=C{SaO&a%2D23k$Hy|$GU@e(p-h`j8GTb|g z_WF{lNIsa|_xZI^wqBv^h|l%fy~&-^Ueb0vk!P;U^ZhaNl`8%7bf$kYIsenVuJKeU zQN5|At68~pA@y@{B=-J)`y1FXA+cEWE*k79fc9=!>`kryh{*j4aN7`h(1$=ZjZE84 z)89Kkrn_7p+q1C|p8doi6}+f^bmZ$8nN<#wMi2B(*39{x*T|bNjJTjb&mZ0^9NA4D zeIXIqBX8jx^dMkN8|uF?GIt1rk6U0!23bbnIND(M@`VhzUHGFLFWS&?LVJDyr~wFa z64SLnzmA3|rWy-$5xG1W*1kb4e-uV6tE#H4t*s=mjU5Get%^R87D_fRoX3IYCEon* ztgY;bMJIFrTYNHspGByQ&&wtU`-~wn7N3TI86Tcj7iW8yozFH8*9K3|>k^0i-X-qO z`6oEmOvJ$(G8%j>XWka!x~;w}11q-8kf=Af_6~Z(JjX!J3Jv=zTzZtA zuIi+1xnw23{y+;K>3mq>1$+FDEnEXkK_#kKTut(15*ovLM2&VHgc?y-Xqx_C=6c7g zkV9yFY@mGjVb!vZ4$eZw{7_`=#z%O=rv- zCe~}KjPdznmrky7gTPapl4Eq9o3VsDYo$@O*pt(pZRP~uh1__=gTI}r)W>TV9lJaF zgjZEWk{0@)oSha9Icuk8~1 z(jr-`%*j#GK6~v#?!F^)Jy3HJoxPtOih1)ju4h*Z+ep#JML8bUK2V;di9aTDr@`}; z^s$aGGh_)27wmCMD@aJv!FLO!_NAqBM6;YN;oPkh@}ry;5x;H6%EkbCF!nsBe~->` z;{B5?c1g;xqBLm7Xy&O8n|!bVB`Mi_?qPV)84Q|tcHToT(nkTLsZ61IVFi=uNeDH& za&rrXeD>CkojakcU^}kZ=-BRSu}lJxB2moEdV^j2if9@ljkY(g4F>{_lg~A3njduL znVY$66>NYhyAAMLb7EmZ! zRX41m?G6R)rXA4(Xp=4f!jL^ZpaWH;UNh*)2KJg=ekDFrnM-MGlm)GIP}_-?b1AKN zlXxOifDYL%hbMNmL-e8p46WD+%^rX-Z@)Cws}%mIdniJGB-kig*{9PesYKa{mw&E@ z`^CFqP|xT|#iH05>_C)^wbQ_3Z*Nb`b25j6xF2izk9Uxc5C8Y2i~RofqWHvU-5}eJ zV>l-!TrIF%dhA{tB&)+Sh+^YJnw3ESk4@Z9<5O?bm#_MlZMBx|qTElXPEGB~vZeC! zj|%R~kJ#5u;rEOD&qvvh_u>!lx$h75S8aYqH(1QB&!I>PCR;6Y3qOn;S5~YqQK`%v zy1I>i%Aagk<<4DeB^+1L@36=QRh^U5Ph-oU!`Jb2pO#u?;_crKLI+gQiKy~lD#6~%haV^3U2sp88O8yuU z*$^`*^HPBln+;4n?6(}p-w;oqH^ily0SpSu6?d6_s*LuiNPZwa)S`;rV%W^b6S-P8 zD`$qW-16xl|FpiE$a&B;b{(N(vtjiR93x3{u7mUxu>(8F(|ub%9c!*(Nb}=A+W;)! zk~@&}#zNx}6jdw5qX`$S@b*s178@LVYajK^v7}TI)}BYv%F&XesiAeZ4@aL7ME<@| z*2o%~`3T6>d5!>Pgnq*|?60p+ErIy2##le7zJ93CzrEH0uRNn{!Xq+p2R`>LEe@er0QF>x5{xBLxvSm;g~k zL7^JzAE%!XTenilB{L4!v8()DFr!M}j?g0$eGXg{8F?(|ii3ckL!2Pyh1e@^7N!98 z{AR$6J`085{f-7 zsZBh2tR}+L{IH|ot1?6v!`qyZ!jgw#;oq)Bdy3Ej4n&5TS6_}!kWVR&LpZS-F@Tk! z>D#E!$!??LbtX{ZHPF}RAQr89ai6uR0I0alX{q!3@3D34P0MO({dNb0#0__fVjZq+L!%ZxJ!ur5i7@n*lNb2NzUH%q zyjxJb#@yHR-Q$*U?^MrmMKIIp_zf{n{aPw`YoUhFhE!xw6-D7&;J=Vy z=|TAbkEX%Ycm~7)oNi73Wy;BHar3?I{A)F#g?A`9MBF7%l;r0N6<8Mm>?dFlAjJVB z7+i)csB}X_MIHCpu7-~!T$eZJ$GHjVzp6Wm3Fai;e{jasvDmpD9$xEzn2aQCdVFkZ z-&x<<;R}4ODKdULI<(5MDm4WoGyQc;N_@JwZF6vLa9I@jB&2Y#b(wWd0`MJx@7H{g z#1Fx&`vl4?^U<6){cnv)=6pFCA&5CK*Sgu=eC)uLo2PXytCv`Fs>hC)qFKQ`6Zj13 zA5`9}jdUARJBO_waB(SYG$%ne`Cx`@veFVMoC3EDEv9^^Om-nt;xnP^dVeU@c1im1 z43r>N!|eM$Ig`=eRIC6WyGh(8`X@ydQB!`@%hclj`rdrZV^ zDwzMG2oYs7n&fipG?0|R3m}@BB@mlWR(&pzMIGGI10&ji145GCLD%giU)8JGtJyS} z!ogg%D57{PH0sof-5XiYU}vx>!9=qU4)-c_C1#Gvc7}p|)CtPQXr82cdh+9xTv_3> zB_z&~)Zl}%$v|@`k|r^M;WDvy1R7endL<3VB_v$3Ld%g*i{>1a*)Y3N z+L)*Kk)}|FBL2{60U$CJIjj#mlpm}DPfNaE-huLN@yh9E`8*8qp$|8?h4uyS)w8-W zu#CN#_SIL}kGFrlj{>G#3=){pjSH>IqnV$SR8zLU7fJHYZ9--m+tM)EeFzh;^&#&%TrPoe;zFZJ)jd= zsrJu{sLxq=miufFjRPjZ`5|Z zj+gqX9!m-a!dH^cQxs0xw*Xs0(&UPtKUqB*b;a>HE=&?H_b;24#h);@VEL;sMgTp2C4NIjz zMS`TOM(XWMg~Jb7(U}Bp9U$0!jl+%V~y*0 z@#g|d;oihoK?E`V?D}@dP;aom_QKbxtMDCU#W4KAXd#cFB_rZ#e+{YKsQUxJ!m#k& zse3SJ3tot)WY1C}3Fm}2?xu+$|0c$}b^`mR?MTe9bX+;qls(f{MH6IBt&oykzu*JC z;q0-gSX>I4{-sh+QHM093CcHBN39q@xq<{Y@eCteicskpD@sv_Dc_t#pZj734^AYN zN}#ApD^lBD8??FfdyuX=*LoR)=@9FVD{swyFVt$m<&s<;ODPKEaUOHZnKZ0cMCZwbrEZhGKJFc_Bz zl?FeO^iQ2AjnSr_VKBXH$(*~~aJ{jjBP+RLiX{nAIb(eoZ#_|G1}fNxz)%8$ht7aa za?o-QyXBbohNQxRVeg(H{+mN5J`pdz&xc7LP0=<4f1ge|B;J?hu>*8j6FmcTL`cT0 z=R{QR-bA$Gc>ZmAO?*zLBAJ14F`e|e*#u=rVi8=NNSG>^%-f)8kj*WOL_^g`T)S!5 zm7TNih!z9GkjM<#&WD~4q0g6Cfz=SR++7A0M8og|(qKaW>;?(SZU$#xN>BWl+b(PM zlgr&0>OrQ-V&fl-9C^0!!kiAiU&KW)?a_ox(XE&w5d=P&<|Bv7-L&n=PM3CM3 z_4DOcYB`Jc8gfU&ko}<7al)}fb<(8m37dG9eM}sOM`P&{Ue&_MxejYA-4Fs&Q}fgQ z?yK>`4G2Y?$VAf45(#!L4*Jdg=uW{i%hKKc>9QRK^i!t>sop-?dQ%m^lD#!WJ z-P;kxd;9$D)siDe(Ve`B$g#DCG)_aOGg{C>M~d?w66mS#u$s-kE@Ol)&+ZW0k|m+l zd_ExA1&Zl&&gTEDomDHBd&8OC8cWY-cVjX5*5YNa1iku>&qmO+v=y(As;)mpM)nS{ zvcun?cN)#Pl%s;N3rPKC>zHcG?r&5yNSi5q;AM3^=(5fWm(zdXKMC-owwzqn_-s41 zwOyu%dd9$54bMCku`7H_q!;b27)GgUo(U<)keWU-I~_2-EBm6VQ7_-Jmy9gg@@gO= z%Q-%t?LI1E&y-0TRWYigT_a<8em?Ks--)E>hC@Btu?GQMr%Z9We{AP#$<|V0huleE zPR`1hErGoxNrygW`aBEg$cr4+xA9_r&dQ=?KNGR&F7q{Vr_=f9j*DgSQtT(^FQh9# zwk|qV9Te$yo_2HlFO40%M#<2skMG8hCRM8+7Ph)eDu60KZ8plWWCA=UdgA*ds}QXr z5l#`uE{b9oLMgibR$H{<`BE)ucvsi=Fa+91yAI;ce(B9$dx|J<{W-S#N94|YUaxW_ zrF-AtJ+tXjdhs-o&OP^t`du5o@iq3WUV#+d;YA0&Zj<&yJe19JTE)sURQNB;#(G-1 zl~utd<9NfwM@H4)So6>1R31l$%Osx-zH6{l8c&pqsT9zY-sAyt^CuKK9UU>xEw`e1 z&U%U2lmaGxyI~Z756b(&hj}9y4B`?C(YSaxDljVjs2t zXs+d@$f!kc)oIjQ%lzP^wgfD5LexMSJ468bSx<0tad}<1u5cqX;#3MSsME(^v73Rl1H6SxYZiozpoNb>O`6hUPyW} z0maKWQ`6)`x_`Mo>Ww{(M3`Fn*ai_0Dk)Vd4I?Rzh6<_VfPoA#t)$y^_BNb5)XiTqnkjJ1IdWaHuj2=xN9 zRD3Hn8h|1;8@E%=+T(+LhjhA)m^6IXOQW|II$69#;Ky+JQdeU1G1>MbXn%j_-A5nT zNXEPKx8d=I@39eCNnc3Te$5ar^+Io`e9a_ug87+Eqgab}aT$j>sIU9fW+=V~X6neH zBN@7o19btlB(c{S#p_#ZOE2-eE1mvZu0MRkjz^EB4R6%f0l)N7FZRgK_5&}{9Rqf$ zHBaFz-05NTn4ADte2zNepT;G7|4EeW)ZxE23WeW{;NNY*DSs`;HSnXSDEXL5-ug_7 z?*|qM14mk)UGl%^6aMiT+Qwf?AR;~z$v&ArD3N+3PAztQ5A5?qi2%66vt(RrQV%L_ zB(vGnD|HA*&&f?^oRpG{p8Sg?Q#^xu?tg@&1H~MGUszKc%kPCuD|Y)i%>bkJ4rM{OjjR3H+)JG5j!JBLC+VMGz;DCo#eqvEXgYPawH4 zDiVXs&5sVU;2r$1818<2s2eeSBY03uZNe=`L5;2bL$63+1iD~H4h*^fT&$ktw+pct zBgqaABT1~(c;V)KDn4gys?+bpt7zv3qh0^dyWryl?c^bh9`lFQV6r;_mHl76k@h zoL^sEZ?UbLi|;A zaD9i{**lFoA)cq}gz0;nElwNO_F8LO3ARSt1P{He(|sWA*{FA{4`Tpb|4|Vy_;Elyi*8Zb59kFbQbdf} zk7hK(_D2<_?5AyXVujjVOu%f!VcE`x)qLsnR95A4tYCf(--bQ1m2TE4QCVFD`?_Ad zw!+R-R>}cd8RSg2ZR4{i6^pJ>k!IzD{@sH8w(fj=SsR(yEY_x+vpLv-?LT$l`|SWJ zGmJS^Q@J5B(%|lJxN|-G2(7M~{#}zmxm2o&ohx!BtOHz*-Hqq2qvi2CMoS#kvJru% zVEq}nSd6$fqHl98!kugXQ!@tT-0mULg8sdHYP$u{DUerz1yOf=Rl_cIJt&Iy({b_Y z+AUK#xW=_nsmwIDl|BcyfKus8XhJ_@q4Vt`oM70=630Ok{=I^X=~nV8R02>x-*GrP!(MsjdBUIR0?rT+@=kLgaP_ z9n|;~zcGAkrwBiH9+bV}izelT98Q7MWV(0>i;(dI6F5YCLjhIQ6re+QKawl6%ZKJr zp`;tA;vA}%lqRQ^g_($p8bRoZ4juTR@}=nQ&uiOW zwT+Ud5z9y@z_UfcDEKBeo~;nwD`)bv$FYrcv&&hns&tYGx2u~wgYqfypI*taGx?Gn z%M_C$g=#FNb*A`ry>}sL%SDkJm?otKa3KQ|9wu=8P!rVbK9sp!r$5R09h9V)=OD#< z3?E`MmL`%IZ`^#j;ZlF(i-}2NqUu99n6Rc0mZH|I_tO4U%g^;;k;bg7M0KnjE=oR5 z;dh{rcI>NlmvK9eq5-RR$s;Uon%T+5vfYqbnnZeNO(Qi1>!ZWmGqYNNlw14QAn~WZ zU2)Qt!7X5CV*Op>TU&bzCIm@wzqrwYpdj2~8fqk_eh$Nw)9<8P35u;CUvyn4!~C5_90snXg$b>3Qe+e92Y)=Ilcc1&lsz@=PQ7Q3wVWxVMAhrwKW)D%GfJ~&uC$75H` z%Gdiv@0fl1CoKE#o!44(>iSRR%L*^?rcTE7Dy`aL(Npl{~YU&|2p`=*cbf3raBRPPfD$C5$? zm$cw$oy)uVuNu=sT7&aH|9GMb=vb;*>zUiCI1H{}EipX0hltBqo7S6bVlY$PjxF+g zR+>4pJT`5gu8CrNt1uBIX50As%r%q_95wOWo8671qfZ+<rwnh0vu4|VZxx$8o};2(+6E8c z<*{ZQYrDy~Aa7Kt$y>YzuF73)(crqnc4Pb@=)1~Tc0Q{*EoEkil+@B^1!>RbmH@7< z9QXeA?~Yq0iWq!f@N@u;@^+C`Kv7gX1mub9`fSEZr_PSyP6?xG--t0QUymfFCHLYX zdz65Fr_fPM|HE5-=LANFD^|zNQ?eDAIC=23n1hhFHZSW@ocx<};B!aetc-^%g<0J? z|DLK`jDTu>+5Z$S!Sn4c_? zL#)BqUB47-cKM%0{TYRwDd(q`hnWtA0;H?EZr)q-Osu7(z%6Ko)=wB|DI$QR#SajS z_D5FRaP=z_8#|2ywZsTs4Gx%&2H2QTpMIUmBfYz3a|qGuwUK{L}Vk`|F=x z9Xh@Z^bv$$kL%1%*iV;9aM5l8^e$kf@X(DMRu1`L^K#<9;N5qe_^&OOZv5N-UUM^7 zqBC_LG~3hci^u5PEvA1K#yfvHEOVczOami3CtWM~c0O0O9HZcp7R@8?eZhiRlW?Pj z#y0KmI&AO)S!l+G1S0}IEYs(3k*^uyMoS8<=;Lyv-n}ZDuH;E{UMvkmV=g9(Nx4{! zg3T=+)wYwR@Xb%^)M4PdV@`Jb>^!jwJmd!Atl5(9>(3Zd19(+L)8K}hpCE9!(ITZ_ zxH)MNdxEKDPw*@+t+qDlpRR1?ow8`kS2fb;Ce+sdxrmXY$**j~n;3*-%r8mQ*vP7R zkW8UhJ_TL1J!aaR%6BKH(V`|NKrlU;rqE&ttl=g=KjB=QcxbGct5ZV`a-1tx(>ysU zIw#FAN@cD2Ic~|Nv2F%c)Yj+I7OW7^iZ`7PCvE^ZXW%^gr9?4C%u5F)7{!;e=5|Xl1$GfR^V6LCO z5b0R?idoJ}n=mSJ-zIKmiQr;m?kV|x9xlrE)HF%H{C@VSyd2w??B23Ys@0GES?+F< z1+miH{^dcVe>?LKVOrL3Et_<0KKRu{p+-ZtyiG@D`dg#Aph#m{lFQTKb=jQ5E{y1A z9rjT7ll0WOy;QR41>a(#Z9znjV>{Nq z{}xTGf!xfnWN-_0D!(3H8 z5OF(|<`hi%au&avyTr@*or+46EsI?XX~b36DkoLDQ^A8C^o1VmcHmVGhP~2WzP-%G z+cayXw=#NC6bwJgq_&gRIaeSws>N5wTxzSy}-INbRd@t0YV{{8;)vbb9J8T zdOoi42VH*S=Qd_FZT00nr(XYYA8SO_dk)N3MNI8QEKOgboeh&Yb*=`Mb}!&Lt?8~| z-p;TA6P&qfrPqeaJ6sjd7I|D3q`>dFs|UW&W33<*n^wBN`$F`osdR{L>A_Pn4TZac zE71!{EsH~)-$HOIxzyvc8*cv^>yP2E`GG7P(Sa-KBK=#mW_^Izk~n$|bN~LSK}>$G zZ#;rzK32)3DCnVMG$!5lsG}x;j8)Wm(M+aF)1%UpG`jVNE}URh+G30pRY-R)QzmC( zUTcaHuAzwuDg;{=X6&XsSmcZ|6u)fsu<6aWsaMo2w1eiH2JSNY?X|fH`EGosk&oFl z_v%jys^sT$ri{|)9p^Zv%&fATchm_~#5HzJ6_3 za?{cSy3szv*w7B+*ic*mi<-hx<)$J62tiIv4?vn1%ZuE=CUYB{)HZ>lo!)tY%xSD$ zxphJx>C=OVq*=KG9+f(OS&b0&tE5LNu@xF>DW-WepfHYDp;;M=Nd|G+HS(P?4M_x|=_T zN4oB8+>(|Fdemn%UzM_E-3owz-YwSMEZRX0A2wNmWnR9WMI9WM$_Q|w?WX9Gz3E|W zgMr-?Y)gC?k6;QI?JV=97A#iC6@qCz&BNHN+x9#X6ykUzc>FdF!dWVJtrce{Hz&h_ zayA06?sfdR&=JZc&Wbo;rxG)kpYh1cb@q^W{dI$IXBoi5Qlj3Xp?NL#u1 zVh(o+2+!2D29hMD1V)cs)J28``$pLhJm;r{}mKwiHxB|*zw*??X*XWI)v`zwZe=JjA=Tz^Ch zkN0J}hTXY}m&>~N-pTPXP;Q0*jLr}_>v@0}{Wv+?PeoMF$1P_Tx)9EkwpwdBqqnrU z(9j{Vv?HSv2x&Slv4;KKi(RgPJU@Pc8U)H=C*8fcJl}Lo)E8ls8c(9^Y7taQ&C>@6 zmJ=+6)8^UH!TCASLaLIsw^QJ*(Er!`GuZ6U-m6{c%ptCO0rc91j`VTu&p(ytq?Q8S zOmYde+_<4103LxZL_{+UlF4AEkW4|vw$Wy%vLgI_2x7(OC`oEXnX4<573RGpNJe%^ zktk|sEKa8!=ux7Fj zGYSdfe0$qUNe{ptlBv*n+ zD`MIwtOFnmt>eq1=gl)csUWS$Y15{w$;mt;5!c*3buEVnFPawza)QaXOiUwK!VN>l z!>4J`kIrHDxxh(_>yK=u1z#*vi<~+Q`LB=8i&*d5bQ<^aU=L=?$&Uw3N#P)+$SKn> zgd2Mpz#iZB!mHxI?}8v~p=~3rzURBg`#&G-UkK(|y-vlLLRT8ZeV}Lu$9zg|Q4r%p zDiulLUmxC|v*yvsMS_rH+B`&YX6H_u%`+P~raTmM>iWPV`y_ZsEzYb$EWQlZ(ij@e zlEc${LrhBWsfz-bgF{6q;PGR~+VRQpo|y0S_%Sffnuoi;#z!8KKFh!pr1+jF5BrPg9sFm(~74^;D~<}r0cZ0GPwZJ%d3%^H!5v)$u!4O=%` zefXrI-#Nj? z4^HD4KREqFdV!1p?}8U6KQ@n*Od*qtlsxxToI-$2QBLqxoKnP;xp|+|{Z3r#5PO|? z%LIwXjAD*tvHz_-U@_2&PRjsAl{5|IvtXZ`B38wu6E99cCnauw8sNU){--~@>U$X+ zAFy*;*8{wpc%Kei4B>QM@BAT)Mpj2OF$4cot2;k=aq;u+SyM`i{5BIs)0X6%%y4QI z^Dlhk$_`gx1}mIr6sEwo@6t1PNGs~JxmrJKa+=jBy}nrwBz~5PU{0MQ4Fev^lC)rA z$aF_YTgmE@+wIf|rIu~$fbL$sI8bt({8H3k=AOXN#cI}iIXF5!Y~ohMl+{|A_BXjq z5zx#jZdQv0ek5OEq!%^(VB$&O6!j=kXc`-(DLrR*J8eAMccS}YhtIXiJkO6>!rAyz zAytKnnpObmj)U+%VSo-FQME>DLPtAOmL@``x->(7Mk>E)YT0c47#E$cq|MNOaZ#nU zomJS@adF}LyoF{ zQP3MNq9vHy_d4ShG!SXKZOFx*ve2e=S=z_IGA1JxI!Tg85v@2P(}y_O9_~YPg_}!M zHe=OljS!c4VWNu_BV4?^kqSX6b@(8r97CI>>Yu8|;qsLSR&T3h7)Etvjux2Okkn%7 zGc2x1Nh_K$ztrJLrM5EHgd~Lrm#ELT@<_eGCD!IEVd*uvWMdxm#k2{jC9^R&N9jzQ zq$wB}z`Ak7gjW@c<+T|ww8DTPWFAswssK{TWzbS7*(XcP?5Yybx$LvqWi4TxOYN?t z5;OYteA-4YGwscjX@8zf&3Q7tcmVT}lyvx{w>-~|qeOo$Q<;x~nc_Vctj@P?VxoI$ z*^J%I5XHGzZ7xbD1Zys0P!bdoDw!OL=D@k2I&wCPiNUHi<`~iH`aGF7=E?MIo=m&N z^4)r`*Hd|8IXUY|f_*oc;0@Rji}+KmWPwTGPN)aAsdR<5V5J4f+P{T7!DSS0Hg)Gd zPoMQ0#;l)KUW({kq&nYjk-}zd7_-nSD)3jW&m1erv^Gzs#ypwUA3!z?QJ;G<7guac z^<41T%Iq~26VtiiZsw|jkI!l9)nCj#^^yWQ)v_kIviOt`^{iE>p0(QC^`r^sTvOew z38h}UrZuXm@t_{1i{(_^dO546b?nm%_?K1F2iqpZw3*CezBlECfT81tp?go)09>DL zR=E8>+lo#?yom-pzHkYSV!IIO2PpzKS$>DXz;4Y95#P#d#BbA)*~pboW=DiCv2?FK zv)%E;CHB-zwq%}~#g@OPK$+g0sUC);)V%WX9*p8q-)Bm@8Avnb+RV;s=`}Trlu^^W zV+eDp8I-J+`ZYx+%jk(Ia;0P4kdQJRKh4a90#il{Krl-ELIO}m8AH&?&M{-Ir3fz> zu+qeo8CkV7GAm2gzQmpli<{X@65gMCWPG2?#TRh!;SO)db z+nKl$j-J-G?ET>A{ABO5YzS$afYch%WhbdPa!z_ZyqvTb3?QaAP&r=6PWAs@;%FL)o4ELX1G8_$Vu-O&hUz_oYh;zhUt zNG}Kbku@Vq&LLkqr~CL3I|^9Ft7Kh$9kb&CS26Zsrt;ld5AQ||Cj*bKTVi~%iAQkZ zn;$}HzPBl%4Lld;dX&P!K%4Jxuf5O{rD0lj+5S7>Ze*z-;bA|m&)84Q0BjF5vU45a z#l=nlE2=YwE+cH5+H?gNn#^~|RO_I|s3gNYK47Czn@gM!K+`TlcNnn~l7p^V|8#r< z-E_y!bChY1SNje zb3S1fN@FT73uDpz1<)dS$JNU_9$k{ky4PgYWQ5nAqaF+!C9Z%ys1`G%-yGGL(Fz|} zPmJ8mRT)!tHSZr(qquBFT+I-!cwVqeAw1?epN!CZPS(7nMv%GN zzA$%7wB+ZrljE1BKhilG@-qcB+0!m-rqsS~PM0hcXhX8u%OjFqc8JE2^Ptl(7zdr8 z|1s?l0hg3b)zs<_hBE%NBSzz6MqgHGnB~n==_z#eW2!qjZC&i0woZ=cnq?;=xmjZ> z6m(98{riup7uo0stTJ&G&RkthyjJ~DC^iV;|GGT6*u_m4eM-)=%rrUtUz1?$!WQFp zuBR@sZr0>FJ2@nA;>F>?-o2^MX; zK2HIY+kz66c}m3irtSK)gSSl9XS-e_tCrNG%>>H$kCi3`lWl;6gT`8k8q3f_oUMSAiYUHv$TqN%jLC|B9=!+wiir>-OS=*nu)^U z)ntHF97PMftM8*ifmo!e^*4`CE?>TCodfb%ya>tj6xQwygUJ;TPuLZtdcnAGPtJx& zZ@~4zt3O`B>W#8KIpk7pgFHRdF!*E3g&36&S!5NS(RStx5Gy(_WB{Q9k@c}Juc55Q zydp3AsQ6~nqn2$5w0D`&Rn2T*=LdwVahf%&ckU&3TiRFJ-*cy>VlCZJGXY z5Y6QLm;B>cs^Q&VR0Zd-ZEhMPb|knCbZChqX8S`R#7Un`sj!^J+S*z*jRNr6rxuC1 zcEuhTV3gP;QWpnMIvwt^b1l>Su~<2 zI?-t(U_ybwyz}n4JVzi-xKu?~qQXU3FX`V{bV<0`Af^%ejB{5yr0AiN5-U&iSvb*7 zYrPvqLB}UlK`zRT4qsc?x|V8jnh)6N?L|ns$q#I=ZUKSVbbc1=R**An_*1Ky#EFu} zH!+xzqlhiiGt-d=dv}7RtX+6SX;U=K3)JscxS3@YZ$`PI<=H^7YB)r#o;+4QXtR+? z43L?_>YnrxOaXXf*xAY%%36yoVvrbKFoWod2lA=e8Qde-TOqW9@^x$nXu=27(lt_C z^m+>e(Dg!|&VyK9;Q=K*GY(>_ z^UcNCWfRFW&JWeI3?5)LN61Vdj3XKAn8oA?T>6-DIxB{w4QId#b3S`YXtW)lg5IW$ z46nf{VZ}G3Z66yBY;^@A_r4#v#2FBeNEf`xwc@Q0)DeRLFuTC`WHDfV$TBi#$Sj#PB8w4k!-B2+w-*LH0Lj|Y(UdjybyRbEG^Q4{}2Mij~UZO<7_`bA`o@d%W(2vA^El=yyC z09l@UD-h5hJTW<19Q1R=5Cg>ioH<2NZSq+rC;{S3GMuKkYlrF{PiInd)0A21i;|~G z&d~&E5#;gI`MHr@!E)I9u2TMx@P^##mYfVwps9IH=8#-J^XOwJ-F+X#|0gfIzpR)qH zE^`nd9hP-j20xlM(Pf~e|4EabC}(WGXHWK_6SRAis6%?0$BF+rCccjD_1BpEt=^>H ze_R221ppr0E5Fm~fN1G^^7#6SYKftamyhmc!HLq1g)ySy&v~nX;HYwU}+8)1Xj#-$zhsGwBOYB$gDdW5xLflAE73fDT3s zTgEAp}SI0fd+|oIzoX>0*jb3sf&6bsOW9zkH>GXHZ8PC{H~!O+2~%aNnKu{X;oH>=@Jc}5S}4*rkop0M#rJ0+i^Q%oL;l?+{1dedUF zU#N+UM$J%dsl$I~=h}^0BUqCt4d6vxN7^tNelj9;jS6$J@$6vIAN!*|(QsibW7@b% zdwAB#kKK2$co=n}u}WV*4(}~=N)vflVXTynna;6x+D8wsh<4-E#aMu;lS|b`!DumF za2Gu^=!nENdZz9INo*#^U8>Qv=1iCkPy}%qi+B1YS7rnAm*u&n3$Er+nL5XOlG<2h z9Zc#wOHIe5hD=tCDO0fBG#m^^lkrbpXDkV{GQ-T9ucub|HvXwTDFmkH1aL(X=EhF0AQSrN02LcYqC!wrl?3t8{q53WQ_ zh$;VS5=>|jC?p|vO6E#~|6fgDz=vaxS0*gezI%`N5GJsMx@;1U5PghdIS6>YJ$-4k zT-~;W^#dp`mnx+->w1aU-O>6yHd7Mz=J>NE?sXVdY(0d&wR&zeHfIp5yCuduXV@N! z0#O02kR9xx7ZzO+%C=kB)Wc*WGC63|rlefYYEG(pH=W^R&}QX4pg8o|V~cFBpi9My zL!s-3YOtB6IfmAw4YMlIEKQokG?s@1Z4VpzjWp>64m}vVeYr0<^ky`TX%nlBBc9PX zfL>>U-WqsP$TlbUgKy^C4C-W957c2Y?7D~wF`xd|#0R$TK1tk7D{?_Aub@2!{%|P; zW4`Hu>rUP0h=(@KB>F3AZ}|WIum4-z8urJYa0(F&IW)o;T}H(hl%xiD+t>w;FO0@T zT-er)l41XTh3_0o{-$&7b>7A9#Zlb``g-zqkUzesxb|afyJR6jT@_f7&?H*WcTn47 z&pULE?UD{>z-NX*NGCZ)D@Fd17h?E$rf(ApDL)qnL@k7!xaazPZj57076YZ-fHA;p z$zbwU<}n_8_?}9Gi)PjM3#*JT{9rRDq4#I)x2YsFl5}xSvd3(`NeTpwjd%;jEnQI| zwMm;)U}f4iZQnPUd5VhnX4D7!c8R#XsmC%znyDEm+Y3|13AH#;jI}EJboe2cT&}!v zi!Kn&zUPu`J>NW<<5*omqzgJqsN?H8>Fs&wy%sDuFv7_{tS91L)I++$*NY4Rl^|ra z>7l*BdFk3gfj>_F)DMDpNKYjjh}1XY+p)I&u#A(fZiY-HM%FDZ3l86{alU!6dwAZ| z_iHjPb6NeIKBJSzj_AE&Uwhj?z~mOA!=5eDu`0A>Gv|oLR6@gXO*@{vlrJ5;(X~c| zJr!3%HK!5&AXJIcQznzuZyEoGdpq7FZ;%!mMO$Ba{Sk@=a);%sx{LvJ9XlQu$VV(F zpONCiD_z=7iLW&0>@kZo_hF(!eOgjis>bmZBwdzl8Y(V4!Yt||Oherzc^agaxcRGV zjg+NG8ZoE}wer^!=&OUgFI{0Z?A|R^mT+}x+N;Em@VI(8n;4LJ^-La~8NJ~R&sJdN zo}yt*51lr&tiAUYg8FK{e|>hvSj4@!QeVYNSJgtg{_3;*!*ETFdYyjP8}={8HLBGs zUsWo#`r2B#R$X8Js$8iyYUQt-ul`Q|L}%3R-{jw_p^ozVOqh)8lgH?$^W~x6CU;RV zSwc6wm%G8zUcsqSkSO@O?(7BqzS|B$*Et-sM+(+Dbb#>eyS@8v*Lej3Crdu@!pA_^ zT*x1e0`~Y&a(2-xgnxBCj+A%w7}T@>_x~CAumueLsJItQ!a<;}hhAKJ^1^7uosm6s zK?;Z_?SG=5PNBa(3jPgDn(LfS+I?8NhtO#>8vF^EM{!FY7KgJ$UJ1p=d|}JE4<}>b=;#cS7g|mD7tMlW*@&1bA`Lru|cOyDiK`|103S&evfl;4S z7m=y)$m{q$z;WLlUQLkvT?IE@NQwn9)+ns?{eeHGX%Ol5)0I|%H)E7fgy&b77G1uo zG;7{c&^)#vgvp~^&I+X4@DQ8U#Ac7TI9pk*7MrkV+=(+|!bS+i-?r9%`9c9KHJZp$-O*9g^sBx}-D3 zu2Jn?YTYXi`UdLwBl1y)vm>k1v^I6W#iAyf2v`)0mKs3(33{FB4N=+290zg<6715S99wRYgOQ72QcN)WzAEs4^-l*BQty-jX@wEm#%+^B_bzCsl@nL zAMc}8ic^W7W3F+e3k)CNBi>b;S?_`j4hf@+R4?=fJI-jfS+OOA3OqBd&15U|f0OC`2`gFhL(W-?x82 zKKT39_78?RUr9Nbpd)5tI?duU4n2$$kK6tLcJgPyvQ9>Rx77(d2=RUtAg?;7wVB+% zGVIMP_E_Xi<%D?((v1D;@!v!F{|TZ!TK%l7@%s8&7XMG|a-~*YFRxXqwY3KF|8)=p zoV7>(|IZwMNG^3goBY?vlK*P(LgQbqSF6?fS`Eg(R;$z><-fm){I^j=x<6I?11V>S zQo?TE4JN)(cAd*UN`H^i-~TM>&t4HLX{+Z^LVT1E|9%pp5c*#2{>1K&4_=~xs3kR+ zpFRJ|km9to_PtPr<2RLtrb6M^P6JU87PS!dQf18VLB>RL+A3E>@@2ZPXeaZH_gD+U zk-G}w?bvMeH214Sbvhyl!Hqw@mq#hfXz8fRA%BG>ax6~eNFti>>2AksApk1ZVxOrj z6q!CPS2C`4$Lx+)l3p%NaZ2UJXiP(Qpskg;luXVnhejW_AWX)}$>f$TCU#&(LoYpX z0FUG<1lkAVZrptX*)s?Mak@WrX>07qE*K#&wh>?(uAc9O+TQmP@p91d_RJ7Wc0i^= zPC5%sSRZd;6kZw=LN@uGYzdFc&XO1a5{D(44g9hp>vPyEL3A$=D3DK=th$};ZO(Sd z@yI9!>(S}%#liD~!-I=oTX@0<46*b6J;#l59#;J597B&5L=-iuUf`aiTKz7dLSLQj zDK|m+1a?Yjy26%#gmoaaueYbUSQat0;Ga-el)3zeTyAP}@E&DaTT~1^HEl$L9@ZS) z7>zGIISaFph4&ECS{DngyMmKgw2#QrX8_yWH=%xPuf+ghak=E3Z@;yczw?7rmh&ll z)`gL zJLw1YL=NX0r@m#9bh2?XCa5T=SCn1jciT?gDN697-0G^cOZG%4ZNO&l_wJpZ3sVu} zkNC(+Qa0XqfzVkHe~33xbQqcitsjtWsa-^57eTJfWec~mdjzi;xMy2buC&2gR&A?I;gUafE ziA}4%=@#-U$|PxyZWF>3m9gqOld!*;2q*OBxmtcD-TgT&fvu0-?~mmqnha6sl@lsy zLOa=zvq4EIlUg-9AgZ(K)ZYrmmd$)I3P9$4PQf?CO?+uFh|;CWhTJKQfCZsKM;4D%`3*-{e4n1xWe2+w!GhS$=QBP z_oRzlRZ#`Y`KFsE`+R}>tiH_d$Lu~lY}5Wdb`WzAvRF(2fZ=qu zXHkcoGA)92u*6Jx!FeMmnn@`VE9Bew5}|U&e4S$@C)Y6KowkTmR<8^pC#_c)W?l6~ z0GPWoW`$CL7UC9>8d3Bi{XJ@4ygJ!e-Nk^50SBp~@VO2R1xgmgCQHSLSgzQ2Tw01) zrUp%*X((5?^N$%yLPHO+IZN^PEuepUPJRb^c8k|n#LXwP`!H0TtMVB)bgB0cBf@d^ z$SEc|5pY5iK_bg)a>RKNnX!mL6dZeaDRVO~IaO%Yu5=TE$8UIgLLqLe7}YZpk(}2{ zRWwmq!5$!m^X2It@EoCRq>7-6QYc+r8O9sSS64+FobhcS^17iXp}>X}^l$ihjRkNz zphhTob-FL_w9?rk0O0ev1Q@x3+xKD%>~atU5L(PjCM64fID?je?mOQ*|3dYvoHGUI z{d6v4gSpljY%?yd3FoqBnU&xt)@?6k*1!%>$e~Ov${59HsdIgIaI$ zcg1C@@7ubq1_zo+{bPc$WIhdjc}7>q?mc!i*1e@j_@5O-8u*n<9C{B%Zl zECK0r(2eH4rM}#pc@XjKzX}hMGnjgGgW=*>(-7}&L`!K3G12M><3gBYPWsPsIQG#8 zWTL#*C1sE>ihar!EWD~mo)>&oP0N)Qs{H|{bhf%SvlcPeC1i^59}3XeGOrMK2$a~BxZV?3kVJ+`m+bc5R{?RL)umJ2MQv_@)KzLljWqC6x`kfd5GE zAhS+5ugvs~%(SIuT#uc*qA_Ia^yK{Dm)6k<2*M}F2Yao(!;`%qQ5~H14bSmN?_vxw z?vJ!dDsvv1IC?rzNeu}EQp{bDiYvR9_^HHiTh`}^{T)3W3mj<0uv|Qj^E+J`=mC*z zyF7_+F$O%fjMYZmx}etuGO`4ftmp&r4-yVayXG`^yWJMhCoB=4<71c=YOE;_%edt2 z5lc`!O=lqOR>zU*^mp4_!03+nIuW0j_&bkg0eL&h2N_}K0xGv;=Kn!W45dRdKNq+4 zoG`w@r|-U#3XPoMyOpR<3$PFh2e!DdLY`rv(PuO@^O-}TGC*>Km7AGk;NG=B?8mbb zvU~>GF6`GV3i2&MFaFSl9kvgXm4-#6#frn6s2E=vQ`_;T7&%g!K({~=saVDs@pzk7 ztSVW-kd8M1+@}CI4@IDX8fzFt(KxzE2Z^o7DWFE#&>H}|PTqU8QpRkH&^uX^c*|bv zIMrdT=v#(*#E{5K3INYy4a01Vp-p^9vC5M}mtMdrIvT93NGuFezY^IJS$H9&g2GRQ z%-WZ?)f(gkTzyMIC%lvaPB)E#8w*)fA#iD3DQUUw&!pZBUqBKQM;UW3BOHLLIEzSc9aE{9^}`R^wI3Z^ z#4iVBl`yP(A2n=$U;Q5p@n>-WG{gT-y}xSgTd*YpDNQYpgx${~q;!kNUqy z{okYh?@|BvsQ>$)qyPJiE_@RDKjq$D`Rg%sgUIg0Rf9=?MB4X|PV04sV{%MuTv!qJ z5Ssg~)3cM)^H$R--)#uyAT!e$WU9}~bPAcOGE>eDooJdx9mh=cL<5W>g1wjEiOoj? zl-A`wR#K_RO3AI%oqgm3?B_r=At`5Y9b6h|BG^+uzRWd%Ro z?@!9awLN%Do8E+mepndzWW;Y5zcd*H@Q!8V_0Jj2)XQP zcQ@`Xo6KBetXQ!kV#V-t^WgktUgH`LDsH87-xx}Fc^1qb)lvNgDyUCRerh&SfN6ft zeXX!ODTs2ikFtVgwHlvK`gG2;F=*K~l9jvJTE%-p>#+Hpu3hqqHdrh8xxo3OyYP?f zL}kBj(Z-nly1B91w4;tsT1WLmeEkRKSEKc+p?4d$ z{BbvVfbPux-jJRM%AEh+*v0P5#kN!fg#bhunbc@gy-8#yaa&C&9ea6w9VyoC{)DMr?yVr=Bz}-k! z%)4mvER%cDJ~c>QIbVh-B(tZ-V0K25}#4J~v z6^VoXkIx06J9~+==Dg85YVWri6c4R_cxD_ZNt$uTiFrS#mKlyM|K#vxpYD)o>^r7E zQL_1lrIJ(@@B2BKn7RDt?iMA+i70cH7*tMAK=$StDqWPl=xL+T zQqJ0Bw3mh4cRRRaTS>2Tm!dH+B*Wecfhad`0MW$pv-()jM>W<|I`-LA%-Ws;2h`$! zHqX2ISe$Qa)T!stXP-hbH3Z?eLhL^>YDIa~z*A`P7pA-RiXyGIf%P9G;W)7yl2q3D zbK^3P(H5X@nuvY0X){SykBvJZ{nF;^?@50-hGae& zT{;f^M0_M^iO2sO)_*mEwYu`jvivjp`6maW&Kk-eibVab2A@uyY%Kcpze8+j z4EA<-j^y#YQ6Qau3+i{TJRn^|J028A+9m^F(%-F_AjbmnJ&Z&=ZC{)9verMF=TO6K z^Kj!DJ~GNpkec*ySOUvkLW?!(WPnH+c?+;WB3}ZsD&UrmQZ)|(8Zj-*&{oFHNgSZx zC!!)5d1_<92QuWxIGl6eC;*)FIAPB*^s!!cmzUk_c6OKX>8l;{$+^df)1q&{mV1sK zJHmm@*wKPo{xf2+e|2MmuOD;ViY&A{FB6x2tc(7Pu(^M97R)H937D*y#edx|_;_~U zaq91$k;gN(-6uQf+C6dM&Twj<8M6JWL+~>~w|^A?8u9=B0Q3?jXn+1DS|GsZA%Jah zb5{(=l<<$39OHfoFy_dBK|vu?GGG|_FJ714ez^=7M`v>+!BCYml3^@R{Hvn4VqNA5 z<&|<(wR4~PsaAVC3GT_gJ1+)@!6O&bdDJiBp7|~{Op2c3GjtSRLp||rS(aw%N96se zb5B8iw$bIB>X`fVw@}J_8%mi!M=bkn+7_owWUk*5Mk~>@i^K%Z!F1ZRaF6{@_W#A~ zD#fd>?*Ch^mTDV+DOc8NYa1Jta%qG7e=C)R|L?;8cj5oL@c&)-|1SK07yiHhO8&nT z!dvA7Bllm^N0nc?WpXPe!qwO(p#vEXeBO($!tn%H)~Gw~Ur#8wKHWY%>vIHt5=W_| zaKYVnlZ*?uH1Swugcc@H zkyuf-!o6G^`<{stF+<#0ir>E&g?+#ntsd}eViPbt+)M=?L6(y@Seu6JcxGpdN7Uf zKPUKrM9E#+Ujk|Dfh*dPYb~`22tL*(5JlWG1Smp~Sh#vxv5vJ^B)tTF;LobhQYO|0 znsehJ&;gU*jl!FexV;9VH4$xd!?T)`k^E^mQih~>bnm@EpN|I)p^xO2WzCu6i(mWM z6O~4IS2S><_?b7Hvw9IBr0m8K8q<-M0b#^l56M8EIwV8{tONQpoye1{WrVOt3Sp?J zC>f(rPp#w_60xu2=?K24BSP#pBw9dqBj6iu5b-fg;FM9nHyv^IH%y2jq*FdtR~>Z! zr(6M}>5#qIqT^g0877^-oru_kh&;*jA9{%mJ(VWEb2@VRx_8t zJpv`ry{U!M5XJXJcYHLBC@n}7DCx;sTpkex;GhjI)Za)8D8G$e6{NT+u$T6_acx<( z$b*U*(|i^<%mG1Pco@fwH7K?z5+^jP5>yNesniVn|Aiui|&LaTamgCZzi+ zQiQx=fY$5Ujv+#6p`hbl!7@wNa*oEwI^lqrEUT^0>m^b?wSFemLwg?Kv^Ct`() zu8kj3q_9yWZnR}Dcm}S};?0LHSoBofl6Y~VA`%s0C%~qRp~)y^t8iRnxlgb`Nk>59 zih#UgdX`9uwb^H~O{D6)&toK?7mZ3DheWhtk3N`vdH}YKki+i;>QH1^0EHB>=0x(+ z`pY0mb6WP^(;W9R%y4H=&v!v^4Sd%7Igdd)&Uk%|<7vLr@AHnn%rnnA@DhkABuLz; zwEVEVN?gZIJy*?~!;MpTZ5cWn3L6cGsiH%H3`;JsUT&*PlIthTnBrFGbB~g=P`Ai& z>R!!*bk?am)X+rAIqTTfZGYCun>X^6&%hX9IT=@?@%z}ZK?|62aDYgT8pn}ZWrKt- zN5(NC+fAd5@cP?2y~j%O6-Yz5HiJ<=KvYr(1@%FQ;)gNe^jU&6BUs3R5aIR!l@MY3 zBn(G4cqlYQg9cM7s5Y5xTvI3}k41l(^6r5S**i56%F2I-J#vy|@tW~`9->QSPGz=e z^Yo+?&YARA3lons%aAxhgS&%@&rP8LiDjhe1bGES6NFb$RYuAD{T(WBAEin3pR^b+ z)B=l(v;UC$zds}XZ)L6Ymog^*s&15O>ovOnD{U<9{}%Uui~GOD{omsLZ*l*(xc~c4 zkN>ORMwLnTx_@oGT}oVci3`W>0P%_b7HY}QizKYxk8nMM$!dR;2n#GP&Qh<~($bTu zcfoi(3X}cg?Mp_WVF^16+@~jphbE}6fu_U?OL*}W>C(*5$VR`MB|1L4`GO-SXOWz) zk(f?;`3Zf}2xQcFRg2eoRWoYgX98|M z(T%^>4Z;_Q?u!y<^Y{fDf!;4#fX);D$@$mRA!ggMi_vN2D`(8p4lYR%+uNBPX&~|< zwgJbIxNcrC@}N^Jbx;3%xo8>g`6<_u|19_XtfBl{T7suecHy3%>7H*pjLqCtsh<;j zOM0Iho88;duGr>lvG-zBVdvWq9e^W`<_Rw_SKOFC*Lyyp0R6Jz1HQFj0rO7x3kD0A zb!R(Auz-{ie>1@X?&ak^ho`>1lT7!;Ih_~PNttk7gzgG=I52)WSIjs?_$)_ED*Gj! zF*9)gQz~lA;R!kWszo?SBC9Shpz!9fAg&IdCHQoG75aV7VA`FpdH={!Z{zH`aVcwZ z*K$8$8)@A7A7a)WWfvz;R7z@z7j5lG1m}f$_Q(|*e}y-rHa}^W+K(m_GBx{Hh7vo% zg6&*h;_Vonry1o@{*BpIc~+4$vplN+CZ_y#Rsq4Onb88Xie4O_U7TVJ-^PJunn$zK zws|UvaasY#fHfk3NIWXx<365HrdfnOBf*R-y~K4MOEfHqyDL2(w|$|kgRQJEI_5-i z_o)bl=&npKBWN_qWrqBk0WxYH8(=h1f)u`@M?@X*%vgh@k4AvShQY9VO_@shd*0=_ z@r-sdQi-PE$&MfbmJJ0Qp#Z^AfJQu?xKl2w3+`zYpi%1$u+Zu&DTqU<36-kpA)J5x z>j5$0$Y7&7mG7oGzyZilLGiLkDNu4&#&%pxT6EF;3azd;?4vdof8&1OUmzh*!nEA& zc3SfYWVTT_B8|juc}M9gaVb3+rw>6^( z%|WB#^@L%?I;_0gJcT{656oT*<_&%1)dq)$oWVLOMlIe)?XFH<)v%jawa@7&#z(R^ z98RuC`yIM|STrSUqv|I!O}r)uNLW72Pj5{XTnfdF?ZeL{ziFco{NBt{Y{xiuGwAgb z6}lE)d_Jva3Sp8YXs+-y^4j+%7kA9a+)&?J8_I}+AT|mknMwOGplh5GiomQtLzlti z(2FJw*7}gB3vV0E=YvXi9hG`7_HufPkGVV93_7}8?iWFhAli2pd~zK6DXpK)n(069+Y zuoDMiTP&m<`9bch6~vI7YawAt9kK={MW%=)WDO_;xSd9ine1lCQZq?2vyd@4Mc$Rr zP`Dzk28D*+wNc=swYntXh^}dOz%yQ-8U#!*wNC+hf`o`oFXqP>nrB$Kk8@h8qyFGT{i?2JHrxQ(5 z^|EUPRoc4WbJ-aO@4Z{)qQvHpro}V>{DJf-1wv9LOk7Xe1Z2Wjn_??qdwE0J6lo-8 zV)K15ndg)ok%<&yOmdBwLm(_tr;>dwA3r>}$(}FmdNU4PeY`3(HHfif5k8q$+GM=t zp#e5~4k+_~wAJVjgK$blFJZSk9ZLhHJ<%Y=4>~}zFL5npNWtWUsvJV|*jx#Vk@rD2 z9134(siGPMfiHz^aXTzMH|J#O(R?9&?WDwv(DX4xopJ7JkSn~zh5*u2!F{Vkb&7k= zI8>)hE?q2H)Qq%VDp(b20lx?D$;#^Eu8W;DkJSd{VRPfpsdmvySMvUN_Ih;Pb%T?uLIIzUz>^4?z~5iO{E&3a$br^YM<(9DXk zL68b~Y{Ra9&C2%rFG}Hl*8HEw+jwQ*#>~ohSA2yI>>nS`={fRpN)%A4dwK+mmzOK3vc!mI%_G@cUNu6Gc|*iyvJn&SIN{19o~tfp zx8~ArmpIIWL2r8=FnazroO#oMKU$tB2O5dUMR{R3=N-+b*j<}>^2<3Y5XEoIo)D+` zS>vW2gzeI2jhRP_n;Fm;tQJKtLoHE8 zdplO3*u(|pNUPB zq!1%f-0yN;^tj`$u0m52Kx9&qd_V7q6`tH{&@d)^8ull%FecX84BRox-gg7rmKMB~ zjlF!|bx^ySd?b_m`m?PjOuGr80+{qi(_m-brIMjyjPePk^lTG{6t%V<)h8zd{w!li z_#5YoyCM!38~kRb%|w5n%-rD|Q)bsZK;JW$U>?SG$aKVglO3>}=x`zB07r@U-tPk<~#1qecW?g?rHbVT z5W|9+m|Fk)JJ32eQM^{jq=fmwsb9BIY3GdTKzdH^i0Bt~$zhI5slU@%`R9K?n zbc8j4Bw}N8^eWPc-J@Hm;bIl$kb1~c<}t`(h&>O)tS7Jyy|JH@3_Ldq2M6yfE|l66 zr$J+0WxgGhhIaWo%Q5!cT@F_A?n1nFcb5~;&d2wkwYhe(D0ON``ON%u94b+V$b|FM zh=|S+`e_fC;e$~~MusXS_I!4t#yNUol8hTpMZ?v{ycZ8ri(K?P!_Xn{b?@+FI+&0N z4IK=4CpN1MEAG8&1>k^urY9~cU|>D z>yW+QT)=vF?|K}(?}t;o@?%WjMxjfF;blTUjwUKVDdGz$oB}eO%5y+#Aylcb-Y`tQ zv+MWV{$!ba*`}Qc+ZZL=q8U?T7#t$AMKd5O)xGlG>kts}$l`rNR*@ZGi{z4q;xhu! z$5<5JAaYlxkpyL{Q9nFlrO3(genY#^M>&&r^_aR`29t@diReU^goX2ypMXu%F8{h!P4m~+<`6S7l$YW!YO<5#0dcXY0l+BBxn{e!NsdvGx zNjxP*V66|^E*6@{=ZzOF7@<`^wI}(JN?MTE7Mgk!IAm{{)w?A(8goq~6N&4K46yv+ z@a4v#_9bI}aXG7Y;=s{m(n*9x?efwkl`=vr5|LN0RE}tSgc38<7)?Bim6dC&%9@yv zGTK@Br+4n)AS8RX;3WRDIEe+(Ul9HIiGIu0a(`)xugzcoWXk_9OSP|I*JH@7aP)6L zxc@D-BS2y>l)4=F>Gp{t_xc)QDKnv>sg2VYDl-a4U4YHSs1Nlx2Ovf)3{ZfBCm_dE zVn#3YJ+&A5!ZQtUna_x*7hpdQf)5z7bLYn;SK&^;4UyQt^r}C4lg?1QTeIOBn_{Rj5P_#rtn2iREWdu`94<1T_?9ncGHe87+CtXfInJ`MmQ+5SJ_#SP>ID z+o7rT2vXA>imQGs?@_SC9$F@_hYv_g(hAJDd`ZourS<-5$qiRv<7)=doHJ0krreq` zS&qLJIlH5Yd&L|#s@*sCxIU?fU4LvSUi3?wiT?tpQS9pKGft&%0ndf-b~lo1Deq6i z@gjYl?MEyqkb#`v6{% zlHG{2CP;|mJ_$Z}Kw^WZ$ell#^e6E142dqDH}nNbIhr-en-s)+J+~*TT!*RyI$Vyu z;eZ`V=v_+GEFF_Z1tr;WENK->nh~h*>*}ieOx@t9Wc0zLTP)(|BK#wYoymmW5<+xe zK#ulm@D2s59{DTm@R8RlFCD`PpGBCBxX1pz9ro|-xG&~%7>3sXFTfR4-dzThn0%d# z_@e{8q{sTvp?iN~5fk%dKUN?v?8qJdOIjtYw)A_Q?zysQv) z+~2u~xg&_BZM-bIb5decq{azSK@KwF5TyhPvO-AUfQ*1NYKu4-kz0)T2zT_RgZ#uh ztn0nX_bFsBAT$fQ1{gH4OBfuJFDV~CTQA@BoVo^lk0{mPT^82xY*ZVSvb7O6vWS+-dt)0T9@f z_>>AEa09@kozFux=)w=lzB@p5uo=e^;l_8CZ~!2K<0OEByOf;q;@h9c|70~mdY`On z%5Ef3oySqm&G3|S)6=x-}2fyMS zBhU2J^vpC&t98#i7|u2M-3T*_uQ0ZY4=4tB8|*mo=xNp)dpMExZRmYyC%%6&Oxd%K zjctRE5Mid!LIb4=Bg(2&a~kIv`v$>=2!}%eKOon7sl@6)ve_E6BgYYVZpEqpm#i2aw zg+uQ~dP5AS{519ZA!@l%K!^S{-*N>DICdki7cjH;Aj#FmpoC4#0%ppYng&={r~Ys{ zjISj#VK~d6he;MaapoZl4y+>y_`DW(4L4;R?#8Tvw;G4d`m@8v=b;1n6!l5?(c5Fj z@Z!C>8(St^Q~0r@2UJ?9G#W0$jE{6WKQOI{QdAGv^NBgNvGn^nrl9XkzS zW9G#~IMOs?4ws>n#mvtrqL*M+DFHsqzei)#&V8Jyty?OCA7`|r7lt*LkUK(V{)Jpe z8k)A)JX~13jPEG1`%SA^b6NQ&EJ^9b&6pr90Obx00;OJy#OTJ^ZqpKzA_FzfaO}~% z2couj(AbWCV~na%h-x`TnkX(M$@7Hg%9nBM660PRoXR{{k{C%?89*XW?<8N#)~N~5 zvt2AU7kGfs)Su^GdorJv-lLeLmd!jwpJXpUBw`Ar&d&>hMZhv`O%fEIbb;Ir^e%M3 zPm~|bc?i@N^*cy7X#<5513_q?<|$x8*BdFZxEJENfg}uAbKZY|m`SOa8k2AU;l_=D z2KCsLzpbRr<43oga|TVv(U0nN|h3_8pF8!L_P$EqNl0^BiBuavr!-!zT?zfFfX)1>}RI=tR zbS-zx9ONIA_Nn@R<8MR1VjSG=An2tLS|OAx9FZK8W%Ef5@PH5kme4@zMPg)#_Xn!l zk3fDH`4K@yEqHnuVI#pr3?g$~(PO;a?=8J8bh)@V|M$QDhu2>u{Nr8mA1iC+^}m$Y zN~LP0QmL-5;r;(wWfA}JPx<343;-4e01E?vg#p0A0AOJN@Z}8v_D_zF_g^;le@Yku z7++Eh0s6wzE6WT3xAh%H0K~q`X99q&-9G^2Gfsy!Py9#hK%~O$zbA89yu^yqLP82_ z0u>c9SxsN6C&E5TH%ESX&AM9-nIv!9YKhe+=V2+U0csdsZ7Wk16i<6g?{^-gzxGmg_ z@m2#_L_Z)xa7&Gl-9Py&ThoJG9TD;7BZDts<&ljp0#^AxUkc8(x#pWEuLw~ZA|AkQ z6rZe0fZlmwk=c9xu5zgn2vc|69A$70cNUZDzx!n-ATeZjzQKLUCYU=;DpAe2@WU?B zuKScrp0W~|QB%hb9JAFAZm5wUDS+pxfdh^DR@^|T{KRk>BMup8y8z8-sC9CP5IcT; z*xWxy1>!gy5U<+xV2pH>|9cZ{}vaL`hikccNK z+&r(COcT?<%Os2RykUQ4KgTE1!Pe@@j2Ou+viB2l&{V!4$|DQ&%So#cduzmoBR{Aq z(X2aeWPt;0Bez3L&dlJCc1acJ17Lbb2uN;6MuGh75Rl2en$Ikd7SS=e(%A*9opfhA za;w~3kT*hhITOS0ZcQwFcEJRu#YyL^u#{=*y$DY7jl>Fq?Fq{iV1N&T{14}?iv~$C zK(53++QnI;uwOquz%+9WN|7Fm%p|-~N0TudH^y4)_f!}xsWTA;ITbLHAswyhhv)Uf zv&>3JLP9o3I5HD&|7${KbVW3Q|1X05%U%z<@FL1Gmgurj!q8BEEK~2 z9~_Y22(9tN7tsp5X7xKqKp9*GA@p+`73U5T`Q@X@@ZDreOc{|aJS(zHte%c9W7SJW znZZ;Qu3lJvG#6L7JAQ}obg%ySX(LK~ z<=8E$3Zz&#m-*tV{LyFuG0Kr1FJLa(A>``G7%kc5j*IcfDw?2Ss>qf|$|Psj0x~+y z!G6MI+X}0oyb<;{)qq0rI%%Oe^vAn!>)s(bX2;XG2lmg$pD{mve=g06yY#cm_kNc>2~2vg+2#(rTPT84(V0MWD5T@MLa5i z5vhpyY7%#p%hzZKT6N+8HjG1{kjP?Cam#bYHS<46b8)o7v;1d7BJs9@XaAor58gIYrhB-y#8 ztZ6>oyb4|rX-5f(1+v;o3(73C;vDasfN7FvF4R0gu$Y6-g@i3VYuy^j(RV^eky+As zVHMted4re&d>AT(AoI;;7FZU+g#JwXze#@(6}w;5G%nlzuT4Jop7^l06Yu(A;*~e1s`}*;^EhbG zW`Hs&2tu8Mu$!wOkJW-T@xes_zZ@m!quO1NTR$2=)FC zS0ss{T$6P#gUO9#fwf|LGPWC8!8flW`#RZWq7&_@lck1nQ?x-OZik>qlE@h8xyyG@{yq>c* zY$S%*{VI|$4++WyX6`<5t8lIYrdaQX@P4I?^DS3${2j(|g)rE~S}^1?0%8S9!tYv+ zM!ObJERidK4Hm=Jv3dGdF3IxPD8CE%-H;wiJr>1`Q5Z{fmD3}t=2Av1%eK2TajdYr z>vm_A6qX~R=#Yydd<|j9)Z=~#$8D)S%MhFHslBz7w@Q{BdYAn!2yAe$2!xrAkOKUE zcjG&$Mc^EG+#h9qtKr8Qe*HuPY7?HpqkJfmigMTG4lpJNP{r<*yMiwYPot>KCMr4j z#ABqxrvAL$JZ@l+2G>>LYf^`HT@|fUZ*rs@NJi}IoP-si0SB;gSFmC(ry}TxT|(D; z;yyfP;2@(qxlj?t-5*iPF86P{z~~_xth9(c0%iv_{~m-2RS<{7>R?8H4|>mn&=QHI)C?)=PhJ*BA2tKSlq;>wo0E3y`~m z&HPpMKkL=?jWuKa0fgo1T6KM)|M@fiJaCP5b}vb+o3QxcfxJ3|kEs4wXSJ{@>kW&* zx$iN@J{<>bx|!TVMeTlgeM`bT>3GUpTh&4ZR@8ky4g#&Cc&_Y@@*s_Oi&&GiQ08z@ zuEJW8sI@~9MOH)50>;iqodIbOFn_O3goHjds9XW5X%&dQR)M(vNgk?_bOj&qUkoTQ z41MJ_5#{mXl2RCY!pA_!V3Y}7N&9jRBHTw@)grD1ufpqqucrDsL<-1Qm=yq8K+9OE zd_jeaRKVn=z6!lbN`7xT=K0j%>b*O(@Z=E;yFAnQ1_w=H5dUDo)$?csrFucf54P0jDfr$)C!^4`F zfvtI=(n8@^%ahtKuFOb$pI0M@O$+UVR9~R*2`IZtvU~;T8mXj6P~AT{{k3`g0;@T% zPV46{;l#&lX1_n)bG%`@-H+OrqiLJae%Jloed7?LGQkVc!av;Qhbstx!^W$|VQzVc z?+oA2Y2EV%5g;f&1OruNB&)Pvo}8V>ssJN3tH!HF3&XeMmfc5>%#ZsQt%GK3Mq9wT zCC1e2F;^3M|Y?21t>C&#j^FW;8jr;jQ-W*fl= z*jHsSz990t{Oih#u>S5S-J>q^#=e;cZCQ2 zyTrG_Wy;Xt?UFf=a`ExQhpVg5GgbQ}`UDCBB@s3cAKKI1!5A|Tu_9WiyAX#QGv)Msfvjel)!fU^AFnpWKZshfUoo9a5Se3Z|4KfVQegjyi0o88fl*x*?t3&cW6Jn6^d>%zl3@5PlLe#l9j@OF4!Fu*9vWsftrWsJw z>pgn0=b+(;`5K@19Dy#zdw#R$bowI+z%vm%yW@8st~7pWG=4eH(F3AP+BjQ-3KDXF#dgfj(`7hn%zPLTNvC# zmG)Z2iKYTkwYcci_YY6@0h&iuTBk{P-Dburx9W8!VE)d#eKXn9%_2Asl{c1A_@~-zc;4 zB${4&qSxiku4FI;%@io-;5Fa5TmXU}G)^1G z2aV(XX5%c!edzVeIR{O^`2CZkqmyH5Pxftc{M?ICGUp86iMr*@ z_Kq>P;*~78f7qxWx1To;8-VQgOXA+uCt}mAzLy@Z95l|(kx_oQ(!p!Eac;>mwhp~j zdxLbs z_!=hsc)!W>98ZlooW^E&+D?2-&hM0_NAi$*QzlYQ?Z0Ro8;!tItPgyXQXtt6e!-sh zSRis;Y?)*l_u<}-QHbD5eS7BmdGYo0to8G<*3aYh+tZKKfh^cO-aouJAb1y=#XXj4 z#@#)5ioxFjVu7TWIz4;YI6Tb7Xp<;FJ;86J2NAG7w;hz2{1f|lC{8c@OU(VsV+1+9D+4;%Ip(u^}1!z%W z;$80U@AErR!tBF-RVbj@^{zOQVpE{<_nL({1*W}ev!KDk5cTTs@5hh>UL-#!kpn(h zI0=m=a1zQ8#_aDO9>`U44x7h6ePI|5`lEN$`r$#=`YD(k9;i?1XCZ_^OW25^${8FU zB;W(D(u$X0XD1h}eL=t^Sr_ke;+3yn@PT^2Ds;4aBa|oP(T4HD zZ5<6v<>C~LcmeUApTKF{(t_3K<0$-i3}Pm0fu#Hd(v>`x3)EntAUKtr`xG|!`_<8O zFmNkRADJo?8V;=YW#G4IgVQYdAg9qA6FG;4;**(Hu6cHva~`-YG~@AH41tVFNQ{Bf z9|eUdKwJ6=1usPl55vt0#yIl5vCm#Fs2ZgZOsHPqP}FR;Gjur>yj0x!Q?eccnXrg{ z2-lPk#HZxf(8S|WIC*U9Y;j`KQU8CZ{oXBWv1w}cpMT1^%Q*dKjTg;h_jk-O9}KT2 zw|q(XNhm)0lVFHS6|zPs@0g{^vJ@P5ShDA?$geqg7FUj_=EgR1VrG3(SYX9vp<{KU zsc=h?z++Dw$_zn64`8OGcs8@sxSgQup_e1-gNv8Nybcv3JbBpsi&XXK-f-nnp!^}K zxfQa$_r?@x7-82Vy*b`;lKz<`v1paGynTSTI1?~P55Y8!F$fHt!|pQgNb@u5GvBa% z0ZeH3H|(s>+90fA=zx@}w1?WI{*uti(Y}S}9ag>Zqhej@gVbwL9+!`TEZB>m`^{+} z0>fwn7+&P;i>EF<#dzLy?idFhE2T@l=ARDb`Cuev|K%bNEp)^;; zdS~?O41QglpCG$V&*C?~RlNV6e&R2v!Iba$mI3x4z4-a3J%yg$A;KRh#Q znJ?6LRZ~C0H_^T5{p`F{E}1QvFVuI{l76Ibc15#Rn*$5Rz8mk%QbzN}8!lmf6K~Id zIyl+qg7n3Bw!gOJ{ZitkDhJ470W$H{E~!Qnd#6er{d9Wp+$cfM>T9dPdbPnn&ZSd=oDL(suI|dK@K6$}hz3PyAHxq|$TGeAZvJqH{0yN|#Y;&OQ5$QQ{n))7r8=VEOab z$=NA~!!*_=?R}y&OFylY^5RRp21ulhmROneFNqq>mVj;A`*>-IJ;}H6l5~&7qT62j zmw1h{{rd57+GNFtc=_{RPaDv4>ge^iJ%@ygy~6|irNA$K!n@|PV+z@!KUr^d2{y=$F|H?4DemIe5$JYB?3e0O@nFHTS33Fc2v@Gm@_n|++?UVyFm zm54~I-uhKhtd!S#4#FR~4lE#lkl(q%4Mhvs*9)ZfIF zkojG_!ZPL+5f?GvK#8AT2rGX2s-Da*ZN1SFFRgMC^J1^|oL2o9isL8#wdb5QXk)@Z z_?s8 z1*RWP7sf9>&&nsJlHH*6F#R=wp% z`K^0B)nDL2z7LHGp(_1882RB?f8l5GRgOiih`y`c6F>RgI1DGod+`Y0Lb-DM3*Nl% z%Qy6E&%wLe_VpM<#1Euq(vN%2Wi+`SOhI@923J&zy)w$g3(!|`SywlXbPuV3r=P?Z z0Xq3xybX2XP?pqSGaljFWH=DR5I^@EOY+>)Pxz%5s@L>$&$t`r*Yau4QMcfG{EOb` zd+$B{1YhuqOLnOq#Cwd(Xnm6}_MD+7p~%1B%{%y~eNC_U=bjT{WDRpt){8yo+V6=E z{0rWw<&`U&eqYTc(!M~ANH!W#n~~luk=!k;t1%~Nzkw2pmPi^B-9~u7Cf}+jc|UF5 zON$$8g+b=C`YNzUKdCRFSt-;tG&Wf;;Jc)U#s-PMGfIg$*i_V}peFUC8$+pFd0f2g zjzap!r`sjP!4;y3zk4~FZf&u~+u-JM@={e?r;~QxP#DN-6rt5|9ZQ+3uFJaO-z)L` z@SuKhFvlHOOj~SROmr6? zk#9!`EewP3CB6b#QpU&M33Ok=S+P`|L)w_Icv)WBksDu?OSO!_z6FWG3Vc!W9fe$s z-NA6j4g=iXT3#=0vYl zO8s0yJbGAGbdDgZTJJ&YFamdJ6-!m~T=bLdg6}rzE|VNw_%6?^?B{h?pOW}MF5}3w zQ6YWa>w7*}X!yPaLoNzjfX7|2^7wO=3Mdp%cH)J9koh^bO9=kEbyh4HmZoB7wj0N< zatU(>+m0c_u0fE9WScox3?X%c(#X{=b^q)kEoBW!6NHDzgo)A7n)8--oarcyESh9c z+06bSLP#U!``}DkWYHnlm0SM`HsRmy-pk9HO(U`p-`Vh$d=F<^hzaQ(Rko6=u=pu;el3~mMTv2h@v zU4eUgY*@!S=mwfuZsK){UB}t0AHks6^4?O*nrhbKDpCowF<{9al>n!qsfYcnX8c$q zPO)1Iw;g)b^P&kb!u$K&rUqFK-gZFN+x?A=ZT1w>etiA6)wdvuf7HD^`nVH)d{YeJ z9LD?AByN1@BjJ*)5kbaq%jd$~79`wXRB1uim? z6oxDKAk2hvDQ(XlFMS>XJ8-?1Gl8pN$7|jB`&U`*&fmYndjAHsq$Li@Jx`W@TOh#a zB0vf-2_ptyW&02A-2cjW`%k0*gD;B#=#l#EqJRltlM0xJnV5-rNCAwT)Q{tyTSWD; z+s3~g2eZAUn0HF$WR`hoZpR(I>jU53YaYPbuoMwiU%-o)0-{DU|>>b>3q!Rz6}$8z9OSF^n% z9l^hIO{PXRO%1xngo5XpkS#CU{@Y zdOtpE`^A3BtQFomFKAK{)8cx0OEZaR$SshXGF^i&zh5GJ+(I8dzc2;>tBE}=Io+rm zUI)nj14Pwtg0uCQu}5cHXMabU{UvoPu%s0Huiv}@iVp|CU$^;Z&c)lyU9+sAv!`!{ zf?O7I4VAc5KqigAzss}%xAZ$k`&1%<;Zo+p(U@gSRpQg9$?Fb+V^K)snzJXoRuq%W z#(|X4D!DIO{Lk61NANdUyD%BU>d@-8u<~ZN36NG8Amo=X&Q}wZN;rJ|w)pyQ4=F;~JM5l7v-)Or^?M(9 zm%l-mVzIEdD8DM0oP2)Stb`%w3e(@xFj)ggcbJOO3^A<^_Z19T{kdC|+Rt5u6o&d! zwS@KjRjaOmEbc!seeqo)18Km_$^EtySI8DfSEYa<>f0UQE*hnla|^8Ub-#BD7{kad zY?MmS?T4W2cCUt^?@oUl-+XX?|Kz^eQGFY_U2}Sde+Pj~M#_PCqng}+jy<^UHNg40 zm2AKma7+|%W;dXcROh?-C45Q%bbTl_1~ zb+U;xf=TgZVd^+y*9dsHr&_P)6z(MBgv_dBzsF8@3z6P*qA{kc3gy4a!7ioT;_OmM ze6g#+zGTe`xMNcaqiB5n?zR-X)bn=*lbu!8O{{JfDq!=y$)#j8k_fmEYb^O)Hc;ef z3!10+=w>x+1Z|knyjcpwQm;>0$bxYpJ^|sXOP-HtF@f%(lx%wvjQoI;i|gt#e*2QD z*q3q8IedF0@bW)B(aFy^>a76eCxJh`KN3MAQTi8*=Geff>#>wwm z2Pc#~eR*>H>$b}t!7SI&UwFwbs&EQD)fkOj@9jTG5-b6p^(9J;qF2h^u-W@szme@H zcDgHgLfq?OztjGfo1FHv+}NZV6D9{KKs4uW?t7z}qyy&0j}ZZj7c#5Hc_SKTY-?Lv z*{m#QVC-Xa`f;{?UT zU^YAp)F0sbOXN~}$6{kMx72B?vEMwoIMd9$;|N*dy*IcV1Dn3BMTK+V-_MXkYPL>} zj~d74yGzj(2q!CS6JaSVSY4J|jk*BdNwg}PD@IpKyzTTpwL7HXyaCKWM7xOG*K5V~ zt^8WCwwA-73Ygu7;=aN$k10}u4-`HgC#`}YV4&I)%yM$mryQEmZ8QmnoUq7UL4M=x zHhSd(7XcuSCOMg02QxwiK8Bkp9-lORK{v2%=U*lMw>SK{`QOUrY9*Hct-7{WTEzeU zQ{sRB>j!d{&TJVb)N}iI+~w1e5v`F;N}P<~jLsK!1)1#&a$jcis$p5*> z|GCKj`JbErGY!EPNj?`zKEL%OpCiojNt`uhF2lbLDAOmK=p;Y6W#r-~q5(hea)LyWxNaC-Uio90 zSzguxV7!mjN-h8ImTLYk{;&Jh`M+|lLh^sLyuMy5ZB*8g|ErbO7X06W|6A~X3;u7x z|1J2x1^@SNo#dTrwA;~iZ1Z zd0;iYft^GCNpu^nB3l~K``8C&V(nH&!Nl(*Ucq!HtNl@|@#zTfUhTrccszN0@NP7d46Q_XJkvrD!|=O^?j22w8Zsur*Fs%F%}&!V2Hh;Q4i#{R3*pUyEJq;4So zg7+oRz$H^Y*f?-hb@7b2MdW&*8pj(nk{(=lt-7&k0B(s` zSo{ml7hLY8*f$?vIT$eoXc|ifnC`q>11aF$D7+c9y@@y-qt_THfihp0oKKVzp2+z) z!0_@SntedW7cVz$fzOv@=p9NklxZEGZYgehc}G0g~hEaY_|TQNC+8y`zv>C!>c3XC{ZaDm5d!7%uIqSGAMl z!(U~3_F#g`L)jToij_M#Z}3C^_5laV`1sMa-?!>N8y&_LT)vJkx>_uvh>ccD=k-iot-Mimo~5$aU?#52Hvok$ ze_#+XRJbQH@UH(P5~(VH<3cfQ<>5AuG3e_rIUD-(;Xxb|WS5R2KRq92!`W&v=gI(i zQ|OlJ8x-o3I!=&A`xMm?C^F{ZVA78e2GGLcQ^zyOeH;#aI-RVSqu_>KGWDN9$kWJf zHnrCT89xC9gL95rfuD3@zz8?tU1!>RO-ea{XZxsec19tGoBz{zOLbXI289F>EE#W& zH#naoOh9rO5StoAljQ5@8mLGh-@n2vz$8SSapbi3>V+&KAVlDSo{ldL4++oYJPe|o zJilnUxDaajD8I}KF9}RXBJ~RV&e6$X5}ik~hnzgosG(hGfTo_~qs>AGc-Auz_w#KU zdRx2)ERu^2T?jCV(LnoonjnlNwdnJV7kchBnL_^0EOpO1kC{r3e16tAD3x0=r` z&KsKkYIHQ_z(GT&qc}6y7F0n`i}8@>r75C7B*q6hdGqWb4KsW;r+MTJ3K&etqm1m= z92Q_Wbh=3CWiqC+rH6ejAfzb zpEZvUn#V7;&2cf5`=kD(EkT$C)Y-sf&{zY*6u#XseAf?R151I62x0mm9Jh(!t?16J zgyJ+2g*@$FPFg_XPEQ*L?fSt%3*audydbA}*V^&ToFZbv_i^-^xnXVGilva(G>du%76w-RS^Yrm7mZWN zEt5)BK=ABGS900Y2Bm4DBoN!`;K4UQIm}~6^pZGoECdjPqf_UJtdev83d41`@x+Az zo6H9$x|Y&rA60@%%9wL&LfeFO~T-lxGo%2SwN?f4*P7O$* zFn)5zPyn`+K8WH3T`s!7^n|)y*w=L?v6*=kNVmU0=gid6&It z0QY%8eA2~Pqx~ERWutZ40-lr)Zi$!t z9NxODiE^*Jkv|B=#Ukm7pG_yQ*DyoiB{^%ZvAl;xYyWx9OZQg|AcepUXArEeg zcs>c_c^~$Ds@fJU3(ggKn+_RMRqzk*@ZjAuJZ0uwI+FdM7S2Tqa)D!}AT!amLY z{cA4tiF8 z=f5;woubqqt>V=b-5<}ssAs7pZZ42!SCD3=AWafX!QSh)djoXIB|W<-wK)`PpY>0C zoy}Y|v=g&@RaXO##f_SEAApJllF_I-ru)Jhf#W9L2fREvJAVrmfU4=2XN}gYx2&Ot z0lo)9LE;!@u_6cS6|K)8J%?ygD{jP#g!0DtBYHG$|MG^ z$Vw3bBNoCG0uWv-{Sa-tKSXavOJw|;cP|0z@I$Dfusl^(+Q3*vmdeZq^pwT0SyrB@ zu`$;W>mxkvx7Zla23{?(wg_c{`W3Vl<=w|{F5_4&1W<(@Ur)wTp);n`Uqbz&?$Jdv z#zi{4VF1w2BBG>mg$_TgZ-`xdb!upZ?AijM` zNT+7DqCqBVp2Ai4~smZc3_NiR!kI=(cH}%&Z?*<2#mm zU8~fsy`Q@FKCL#E;Tmegs|#jhl1F$0;2V>SD|1a{J|k=?rsV03gFs`j#8Rn$2`2Z^ zuvvypV%5#OMtjk`mF1w%dM$uY!(VAKG zDi~a67riozj^Nw4--Xg?MMq{)!I@+fePtBoSM;ZpH;)EZ(M#BC0;vgWFcufgKtqL= zjjx-N%FBymOdOr9pHxR80KPp4fennSDX&JaU^cieJPjK|=g?a!JpTQkqN=p2UKv%@ z$w-8P4#(Gp>c>LuEigC)<)`jz0xzt8Cm6ql9hW%KmrjE*-l;}x68KD*1Rh9}z|=aa zFI~4#&AWvHVmrQg9*(K@%yP#4B8_D+UhL*2y10=KeJctRoaS?-mmL#X8_&p4oGHLfhBzpha-+U0RoXu zI`4`M%Cn}EuoDs`D)VW=)t_we(jBcCjcSS{q2Wn*<8iE z*~wd*7pUySjEyWkJI_k1*wt;{pP~Q7zpjQ}_lr3H-|hcj-6(Cu{r}60_%HuD`rpq} z{chev>$}kDE_Ay820Gn^%66f${f1rk*(d+yQGFj(w$c&Hd>PY<3S%fzhzi#jAdY0? zNxiWVaiMv9-gwb!0=>EN04ZRU9y6D+KGxhLHVVD%f$6~zzGF$t&7ww0)K8#xLhf>D znML-!SAd*s!ve#NV6Ww9S*F*}C~sEvCpk)G3uM+edXBC1Dml z6I`j3V3{YFP(xRG7u>oCMf_pE#)-%;To31VNkINrJ)I_g`{>L!)R3% zo`tYB^L&&Ta>`xm3?(#NgWR+bya*-f9|eylyH69? z6EerP8|O~Aryyv1gDBi~9~fSS{AuEK`h))D7CN6Gwi-l&x?vXwLZOJ@4+zvH?|ySs zwg?ir0g%xFQ5?59S?0*??)4O?1ruOsgaV02$o(ONQ>O~6#4cD7?QCofw-z2M@D;a~ zLZ{aAeHxt@T7N>H0BLaSQHacC_Z<^QgU`ek`@W)m!Xt*~iT)^P0K(0BBR$o=lFpQK zm)OUEaskjPUpnq~2s6>0K_as^5$g-f3pgwY-KvwY@ljIbO@FjjX^U9RXm!I@K6k|I z@H=5RFztIXgK|h5mF_ItlJ??ls0RQMSERU7u$z(77^yw45tg?HHjA^6x9QrcWTJc6 znIR@UJAKcjc{KqJ)IyqunJ%{g*9J6UJ6}qZqF2{EWSO@Sg`un$5i!jMd{#S$^|SMB_ketg1|D94o7m?L zfk6^`r7@Zgd2Z!D5dNsAoinC?DOt*(1q2Mcy!oRRG{-1Ge~N zRZhsF4grFTJnORE(wv#@W$9nJ*Nl&h=oud+Y-dCS#I{+0MVB|+L0l`TH;h+r9^;%28|MwxitZfPiXk24 zfOOm*>{B!`MWGKkv(y$14^z7}KMZ(qSKj+Tu=?cX94c5vLH2+oY;jiD4DeJ_U`EFMf55h*UPhr(p3#mGH4CVly&Ti_ zP}GZfp}K4I#$h$w;WVOcdnuG;{+&b49;Q7;Pi!CO4UKPc0Z}xG| z!5!7l_g^+}YG$7hWhL!1aa^q65{25ObNBNB>;Fj^L4Lyh4$c;64F5u77PjU<JQXux$upQ^ zV#L-XSErvrAr>G$DfP(ONy-sq*7kfr8NU^xn-1Y;FVTM)J!>&E!U23})(^$` z#xz|c)-;k52T9F@512d{uR~BA0T~aLynE%1`VnX7K{|+Ex>+J~VmyZ@$1md zDx-E%_Cl^==HNXSt0MnLvu*Z`q?K(3UC7Bh<}On(-< zn=g(}T8%q!4g?+~?B3|sL^8qUr$St)A|h5{&bYy4{Ug9!MHy2ZC8{h^$#X7!D#s@n z{G_?h!~>~S_EhdWjlLl=?Ng|q*rhhB@*c<#EMgQGMgq_WmGc4GLi0Hxlh-CntFHMD z9Drf$+`!KZwo~X*8Dh92yqS08sDn)%oainCoX<~M`wdBs8?Cg>IJog{VX)&{>_e`P z+&GHaOB{=N7e+opnD$YehRx~UQk0JfCg@G9+Qj83%D1992AY=1o$)63C4-g|Y{oF~ zMj~;r*omeVvMG7xS5m!(%u&bdzGJKuQ&db73@{*E8OtS~3HxFurUF=B9Ams8dA6nP zI}(M68rZ`44MtF+Hc0@+5 zja*zCKBDysencg@@r965y%$f$*w0|&_)R||@6)6LT#nw-1=(B53M?g?BeAO8_oLSa zcrgU!S^X8jwRv#%R?dV%G(V0@pjN9Iz)UZ+W1;2eBN#H>ikkN@Y6J6DX;TQVL2&7H zZ`)9HMA;pop-;9jAc9v*@;*NBCLT)!QY*o9S3X&vaFzHo+j~hmv}cu;M-`Ve53W7a zR4KI~qqHKg`ohDIUA>VTFb^T?;uzYLpqUxSm_9&wZ75QPDuCW}#0E|&LV>4_7^M=M zqMx%N;9lNIWz#xMBcR5HN?3*&8^v4)Yd=Y_8D&jS%WaXi_%ZEg79YSkLbKw9v$W;z zo&b{ZO-4`c1P0WEnk60AU>V@7mdxj#sR^Bhf%9M=vJGLkPYjW`rSvpB1#2Wd^prl# zuvy`0nbPoy^Vt1u71Ed8uhjMQo!ew_{^hQ5#T{NUzVeUoPo;R@J zqiGj!ZhO-KX~ceb4(DuE`JUHjg`VDFL@QSw&qDDW8#0=qd-KYFSYq>I#j~fFa4MRg zG~!gHllGgBEdx$rtg6;Dr|I`B!m`+({}TI?MKCckIKz0n(9MG^`mB#XX6k8lc>O7l zKd~I#5;aX~7Edo5juJqG{<<+T;JN7dYz$c3AJHkx*TZQWn5=(BA?xagWLZT)gxR

`zq20fd5q?58q{S^PKpC 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

-n)7N;Qa4?-@BkPEq+qF*Ch5TF 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%0DNzXckRUfHtGj76wOB$ZtaMWkjq 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

TI#saTuqpDuQ`FFw*aX$(65(Fr_h>} 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ⅇT0~6CMOW( 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 E0O^@`!T= 2.12.0 +BuildRequires: gobject-introspection-devel gstreamer1-devel >= 0.11.91 +BuildRequires: gstreamer1-plugins-base-devel >= 0.11.91 gupnp-igd-devel >= 0.1.2 + +%description +Libnice is an implementation of the IETF's Interactive Connectivity +Establishment (ICE) standard (RFC 5245). It provides a GLib-based +library, libnice, as well as GStreamer elements. +ICE is useful for applications that want to establish peer-to-peer UDP +data streams. It automates the process of traversing NATs and provides +security against some attacks. It also allows applications to create +reliable streams using a TCP over UDP layer. + +%package gstreamer1 +Summary: GStreamer plugin for libnice +Requires: %{name} = %{version}-%{release} + +%description gstreamer1 +This package provides a gstreamer 1.0 plugin for libnice. + +%package devel +Summary: Development files for libnice +Requires: %{name} = %{version}-%{release} glib2-devel pkgconfig + +%description devel +This package provides Libraries and header files for libnice. + +%prep +%autosetup -n %{name}-%{version} -p1 +chmod 0755 scripts/valgrind-test-driver +sed -e 's/test-new-dribble/#&/' -e 's/test-send-recv/#&/' -i tests/Makefile.am +autoreconf -fiv + +%build +%configure --enable-compile-warnings=yes --disable-static --without-gstreamer-0.10 +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool +%make_build V=1 + +%install +%make_install +%delete_la + +%check +%ifarch x86_64 %{ix86} +export LD_LIBRARY_PATH="$PWD/nice/.libs" +make check +%endif + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%doc NEWS README +%license COPYING COPYING.LGPL COPYING.MPL +%{_bindir}/{stunbdc,stund} +%{_libdir}/{*.so.*,girepository-1.0/Nice-0.1.typelib} + +%files gstreamer1 +%{_libdir}/gstreamer-1.0/libgstnice.so + +%files devel +%{_includedir}/* +%{_libdir}/{*.so,pkgconfig/nice.pc} +%{_datadir}/{gtk-doc/html/libnice/,gir-1.0/Nice-0.1.gir} + +%changelog +* Fri Oct 25 2019 yanzhihua - 0.1.14-9 +- Package init

W(VKrET8X0W4DyI8 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
%_jRp^9Vfi?wGyzJP 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%0AO_fQV5Zp)i)l) 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 OE?a5;>Q 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 wD-#!!+`(;W(H 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