|
|
|
|
@ -587,6 +587,8 @@ void call_timer(void *ptr) {
|
|
|
|
|
if (!sfd)
|
|
|
|
|
goto next;
|
|
|
|
|
|
|
|
|
|
log_info_stream_fd(sfd);
|
|
|
|
|
|
|
|
|
|
rwlock_lock_r(&sfd->call->master_lock);
|
|
|
|
|
|
|
|
|
|
ps = sfd->stream;
|
|
|
|
|
@ -665,6 +667,10 @@ void call_timer(void *ptr) {
|
|
|
|
|
if (sink->crypto.params.crypto_suite
|
|
|
|
|
&& o->encrypt.last_index[u] - ctx->srtp_index > 0x4000)
|
|
|
|
|
{
|
|
|
|
|
ilog(LOG_DEBUG, "Updating SRTP encryption index from %" PRIu64
|
|
|
|
|
" to %" PRIu64,
|
|
|
|
|
ctx->srtp_index,
|
|
|
|
|
o->encrypt.last_index[u]);
|
|
|
|
|
ctx->srtp_index = o->encrypt.last_index[u];
|
|
|
|
|
update = true;
|
|
|
|
|
}
|
|
|
|
|
@ -684,12 +690,17 @@ void call_timer(void *ptr) {
|
|
|
|
|
atomic64_add(&ctx->octets, diff_bytes);
|
|
|
|
|
atomic64_add(&ctx->packets, diff_packets);
|
|
|
|
|
atomic64_set(&ctx->last_seq, ke->target.decrypt.last_index[u]);
|
|
|
|
|
ctx->srtp_index = ke->target.decrypt.last_index[u];
|
|
|
|
|
|
|
|
|
|
if (sfd->crypto.params.crypto_suite
|
|
|
|
|
&& ke->target.decrypt.last_index[u]
|
|
|
|
|
- ctx->srtp_index > 0x4000)
|
|
|
|
|
- ctx->srtp_index > 0x4000) {
|
|
|
|
|
ilog(LOG_DEBUG, "Updating SRTP decryption index from %" PRIu64
|
|
|
|
|
" to %" PRIu64,
|
|
|
|
|
ctx->srtp_index,
|
|
|
|
|
ke->target.decrypt.last_index[u]);
|
|
|
|
|
ctx->srtp_index = ke->target.decrypt.last_index[u];
|
|
|
|
|
update = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mutex_unlock(&ps->in_lock);
|
|
|
|
|
}
|
|
|
|
|
@ -702,6 +713,7 @@ void call_timer(void *ptr) {
|
|
|
|
|
next:
|
|
|
|
|
g_slice_free1(sizeof(*ke), ke);
|
|
|
|
|
i = g_list_delete_link(i, i);
|
|
|
|
|
log_info_pop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
kill_calls_timer(hlp.del_scheduled, NULL);
|
|
|
|
|
|