MT#55283 convert ice_agent to int64_t

Change-Id: I50b5ec76c7c00aade5095885eae1ee8392f0b44c
pull/1126/merge
Richard Fuchs 2 months ago
parent f34786dade
commit 40319c1fd1

@ -51,7 +51,7 @@ static void __recalc_pair_prios(struct ice_agent *ag);
static void __role_change(struct ice_agent *ag, int new_controlling); static void __role_change(struct ice_agent *ag, int new_controlling);
static void __get_complete_components(candidate_pair_q *out, struct ice_agent *ag, GTree *t, unsigned int); static void __get_complete_components(candidate_pair_q *out, struct ice_agent *ag, GTree *t, unsigned int);
static void __agent_schedule(struct ice_agent *ag, unsigned long); static void __agent_schedule(struct ice_agent *ag, unsigned long);
static void __agent_schedule_abs(struct ice_agent *ag, const struct timeval *tv); static void __agent_schedule_abs(struct ice_agent *ag, const struct timeval tv);
static void __agent_deschedule(struct ice_agent *ag); static void __agent_deschedule(struct ice_agent *ag);
static void __ice_agent_free_components(struct ice_agent *ag); static void __ice_agent_free_components(struct ice_agent *ag);
static void __agent_shutdown(struct ice_agent *ag); static void __agent_shutdown(struct ice_agent *ag);
@ -419,7 +419,7 @@ static void __ice_reset(struct ice_agent *ag) {
AGENT_CLEAR3(ag, COMPLETED, NOMINATING, USABLE); AGENT_CLEAR3(ag, COMPLETED, NOMINATING, USABLE);
__ice_agent_free_components(ag); __ice_agent_free_components(ag);
ZERO(ag->active_components); ZERO(ag->active_components);
ZERO(ag->start_nominating); ag->start_nominating = 0;
ZERO(ag->tt_obj.last_run); ZERO(ag->tt_obj.last_run);
__ice_agent_initialize(ag); __ice_agent_initialize(ag);
} }
@ -668,16 +668,16 @@ static void __agent_schedule(struct ice_agent *ag, unsigned long usec) {
nxt = timeval_from_us(rtpe_now); nxt = timeval_from_us(rtpe_now);
nxt = timeval_add_usec(nxt, usec); nxt = timeval_add_usec(nxt, usec);
__agent_schedule_abs(ag, &nxt); __agent_schedule_abs(ag, nxt);
} }
static void __agent_schedule_abs(struct ice_agent *ag, const struct timeval *tv) { static void __agent_schedule_abs(struct ice_agent *ag, const struct timeval tv) {
struct timeval nxt; struct timeval nxt;
long long diff; long long diff;
if (!ag) if (!ag)
return; return;
nxt = *tv; nxt = tv;
struct timerthread_thread *tt = ag->tt_obj.thread; struct timerthread_thread *tt = ag->tt_obj.thread;
@ -731,7 +731,7 @@ static void __do_ice_check(struct ice_candidate_pair *pair) {
mutex_lock(&ag->lock); mutex_lock(&ag->lock);
pair->retransmit = timeval_from_us(rtpe_now); pair->retransmit = rtpe_now;
if (!PAIR_SET(pair, IN_PROGRESS)) { if (!PAIR_SET(pair, IN_PROGRESS)) {
PAIR_CLEAR2(pair, FROZEN, FAILED); PAIR_CLEAR2(pair, FROZEN, FAILED);
pair->retransmit_ms = STUN_RETRANSMIT_INTERVAL; pair->retransmit_ms = STUN_RETRANSMIT_INTERVAL;
@ -746,8 +746,8 @@ static void __do_ice_check(struct ice_candidate_pair *pair) {
pair->retransmit_ms *= 2; pair->retransmit_ms *= 2;
pair->retransmits++; pair->retransmits++;
} }
pair->retransmit = timeval_add_usec(pair->retransmit, pair->retransmit_ms * 1000); pair->retransmit += pair->retransmit_ms * 1000; // XXX convert to micro
__agent_schedule_abs(pair->agent, &pair->retransmit); __agent_schedule_abs(pair->agent, timeval_from_us(pair->retransmit));
memcpy(transact, pair->stun_transaction, sizeof(transact)); memcpy(transact, pair->stun_transaction, sizeof(transact));
pair->was_controlling = AGENT_ISSET(ag, CONTROLLING); pair->was_controlling = AGENT_ISSET(ag, CONTROLLING);
@ -795,7 +795,7 @@ static void __nominate_pairs(struct ice_agent *ag) {
ilogs(ice, LOG_DEBUG, "Start nominating ICE pairs"); ilogs(ice, LOG_DEBUG, "Start nominating ICE pairs");
AGENT_SET(ag, NOMINATING); AGENT_SET(ag, NOMINATING);
ZERO(ag->start_nominating); ag->start_nominating = 0;
__get_complete_succeeded_pairs(&complete, ag); __get_complete_succeeded_pairs(&complete, ag);
@ -836,10 +836,10 @@ static void __do_ice_checks(struct ice_agent *ag) {
mutex_lock(&ag->lock); mutex_lock(&ag->lock);
/* check if we're done and should start nominating pairs */ /* check if we're done and should start nominating pairs */
if (AGENT_ISSET(ag, CONTROLLING) && !AGENT_ISSET(ag, NOMINATING) && ag->start_nominating.tv_sec) { if (AGENT_ISSET(ag, CONTROLLING) && !AGENT_ISSET(ag, NOMINATING) && ag->start_nominating) {
if (timeval_cmp(timeval_from_us(rtpe_now), ag->start_nominating) >= 0) if (timeval_cmp(timeval_from_us(rtpe_now), timeval_from_us(ag->start_nominating)) >= 0)
__nominate_pairs(ag); __nominate_pairs(ag);
next_run = timeval_lowest(next_run, ag->start_nominating); next_run = timeval_lowest(next_run, timeval_from_us(ag->start_nominating));
} }
/* triggered checks are preferred */ /* triggered checks are preferred */
@ -874,11 +874,11 @@ static void __do_ice_checks(struct ice_agent *ag) {
if (valid && valid->pair_priority > pair->pair_priority) if (valid && valid->pair_priority > pair->pair_priority)
continue; continue;
if (timeval_cmp(pair->retransmit, timeval_from_us(rtpe_now)) <= 0) if (timeval_cmp(timeval_from_us(pair->retransmit), timeval_from_us(rtpe_now)) <= 0)
g_queue_push_tail(&retransmits, pair); /* can't run check directly g_queue_push_tail(&retransmits, pair); /* can't run check directly
due to locks */ due to locks */
else else
next_run = timeval_lowest(next_run, pair->retransmit); next_run = timeval_lowest(next_run, timeval_from_us(pair->retransmit));
continue; continue;
} }
@ -928,7 +928,7 @@ check:
if (have_more) if (have_more)
__agent_schedule(ag, 0); __agent_schedule(ag, 0);
else if (next_run.tv_sec) else if (next_run.tv_sec)
__agent_schedule_abs(ag, &next_run); /* for retransmits */ __agent_schedule_abs(ag, next_run); /* for retransmits */
} }
static void __agent_shutdown(struct ice_agent *ag) { static void __agent_shutdown(struct ice_agent *ag) {
@ -1412,11 +1412,11 @@ int ice_response(stream_fd *sfd, const endpoint_t *src,
ilogs(ice, LOG_DEBUG, "Setting ICE candidate pair "PAIR_FORMAT" as succeeded", PAIR_FMT(pair)); ilogs(ice, LOG_DEBUG, "Setting ICE candidate pair "PAIR_FORMAT" as succeeded", PAIR_FMT(pair));
rtpe_g_tree_insert_coll(ag->succeeded_pairs, pair, pair, __tree_coll_callback); rtpe_g_tree_insert_coll(ag->succeeded_pairs, pair, pair, __tree_coll_callback);
if (!ag->start_nominating.tv_sec) { if (!ag->start_nominating) {
if (__check_succeeded_complete(ag)) { if (__check_succeeded_complete(ag)) {
ag->start_nominating = timeval_from_us(rtpe_now); ag->start_nominating = rtpe_now;
ag->start_nominating = timeval_add_usec(ag->start_nominating, 100000); ag->start_nominating += 100000;
__agent_schedule_abs(ag, &ag->start_nominating); __agent_schedule_abs(ag, timeval_from_us(ag->start_nominating));
} }
} }

@ -88,7 +88,7 @@ struct ice_candidate_pair {
atomic64 pair_flags; atomic64 pair_flags;
uint32_t stun_transaction[3]; /* belongs to transaction_hash, thus agent->lock */ uint32_t stun_transaction[3]; /* belongs to transaction_hash, thus agent->lock */
unsigned int retransmit_ms; unsigned int retransmit_ms;
struct timeval retransmit; int64_t retransmit;
unsigned int retransmits; unsigned int retransmits;
struct ice_agent *agent; struct ice_agent *agent;
uint64_t pair_priority; uint64_t pair_priority;
@ -127,7 +127,7 @@ struct ice_agent {
GTree *succeeded_pairs; /* checked by us */ GTree *succeeded_pairs; /* checked by us */
GTree *valid_pairs; /* succeeded and nominated */ GTree *valid_pairs; /* succeeded and nominated */
unsigned int active_components; unsigned int active_components;
struct timeval start_nominating; int64_t start_nominating;
str ufrag[2]; /* 0 = remote, 1 = local */ str ufrag[2]; /* 0 = remote, 1 = local */
str pwd[2]; /* ditto */ str pwd[2]; /* ditto */

Loading…
Cancel
Save