Browse Source

MT#55283 move periodic Redis updates to main timer

Update calls involving SRTP to Redis every 5 minutes to keep the SRTP
sequence numbers intact.

Change-Id: I04ae24572cb2845284eab27fa7421a8ba072d239
pull/1826/head
Richard Fuchs 2 years ago
parent
commit
edd7328e72
2 changed files with 12 additions and 9 deletions
  1. +12
    -1
      daemon/call.c
  2. +0
    -8
      daemon/media_socket.c

+ 12
- 1
daemon/call.c View File

@ -136,6 +136,7 @@ void call_make_own_foreign(call_t *c, bool foreign) {
static void call_timer_iterator(call_t *c, struct iterator_helper *hlp) {
unsigned int check;
bool good = false;
bool has_srtp = false;
struct packet_stream *ps;
stream_fd *sfd;
int tmp_t_reason = UNKNOWN;
@ -239,6 +240,9 @@ next:
for (__auto_type it = c->medias.head; it; it = it->next) {
struct call_media *media = it->data;
if (media->protocol && media->protocol->srtp)
has_srtp = true;
if (rtpe_config.measure_rtp) {
media_update_stats(media);
ssrc_collect_metrics(media);
@ -247,7 +251,14 @@ next:
hlp->transcoded_media++;
}
if (good || IS_FOREIGN_CALL(c)) {
if (good) {
if (IS_FOREIGN_CALL(c))
goto out;
// update every 5 minutes
if (has_srtp && rtpe_now.tv_sec - atomic64_get_na(&c->last_redis_update) > 60*5)
redis_update_onekey(c, rtpe_redis_write);
goto out;
}


+ 0
- 8
daemon/media_socket.c View File

@ -3385,8 +3385,6 @@ enum thread_looper_action kernel_stats_updater(void) {
goto next;
}
bool update = false;
bool active_media = (rtpe_now.tv_sec - packet_stream_last_packet(ps) < 1);
if (active_media)
CALL_CLEAR(sfd->call, FOREIGN_MEDIA);
@ -3420,7 +3418,6 @@ enum thread_looper_action kernel_stats_updater(void) {
if (rtpe_now.tv_sec - atomic64_get_na(&in_ctx->stats->last_packet) < 2)
payload_tracker_add(&ctx->tracker,
atomic_get_na(&in_ctx->stats->last_pt));
// XXX redis update
}
mutex_unlock(&sink->out_lock);
}
@ -3438,17 +3435,12 @@ enum thread_looper_action kernel_stats_updater(void) {
if (rtpe_now.tv_sec - atomic64_get_na(&ctx->stats->last_packet) < 2)
payload_tracker_add(&ctx->tracker,
atomic_get_na(&ctx->stats->last_pt));
// XXX redis update
}
mutex_unlock(&ps->in_lock);
}
rwlock_unlock_r(&sfd->call->master_lock);
if (update)
redis_update_onekey(ps->call, rtpe_redis_write);
next:
g_slice_free1(sizeof(*ke), ke);
kl = t_slist_delete_link(kl, kl);


Loading…
Cancel
Save