|
|
|
|
@ -1147,21 +1147,23 @@ void call_stream_crypto_reset(struct packet_stream *ps) {
|
|
|
|
|
|
|
|
|
|
crypto_reset(&ps->crypto);
|
|
|
|
|
|
|
|
|
|
mutex_lock(&ps->in_lock);
|
|
|
|
|
for (unsigned int u = 0; u < G_N_ELEMENTS(ps->ssrc_in); u++) {
|
|
|
|
|
if (!ps->ssrc_in[u]) // end of list
|
|
|
|
|
break;
|
|
|
|
|
ps->ssrc_in[u]->srtp_index = 0;
|
|
|
|
|
}
|
|
|
|
|
mutex_unlock(&ps->in_lock);
|
|
|
|
|
if (PS_ISSET(ps, RTP)) {
|
|
|
|
|
mutex_lock(&ps->in_lock);
|
|
|
|
|
for (unsigned int u = 0; u < G_N_ELEMENTS(ps->ssrc_in); u++) {
|
|
|
|
|
if (!ps->ssrc_in[u]) // end of list
|
|
|
|
|
break;
|
|
|
|
|
ps->ssrc_in[u]->srtp_index = 0;
|
|
|
|
|
}
|
|
|
|
|
mutex_unlock(&ps->in_lock);
|
|
|
|
|
|
|
|
|
|
mutex_lock(&ps->out_lock);
|
|
|
|
|
for (unsigned int u = 0; u < G_N_ELEMENTS(ps->ssrc_out); u++) {
|
|
|
|
|
if (!ps->ssrc_out[u]) // end of list
|
|
|
|
|
break;
|
|
|
|
|
ps->ssrc_out[u]->srtp_index = 0;
|
|
|
|
|
mutex_lock(&ps->out_lock);
|
|
|
|
|
for (unsigned int u = 0; u < G_N_ELEMENTS(ps->ssrc_out); u++) {
|
|
|
|
|
if (!ps->ssrc_out[u]) // end of list
|
|
|
|
|
break;
|
|
|
|
|
ps->ssrc_out[u]->srtp_index = 0;
|
|
|
|
|
}
|
|
|
|
|
mutex_unlock(&ps->out_lock);
|
|
|
|
|
}
|
|
|
|
|
mutex_unlock(&ps->out_lock);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* called with call locked in R or W, but ps not locked */
|
|
|
|
|
|