Browse Source

Merge branch 'memory_leak_fix' of https://github.com/jerzyptak/rtpengine

Change-Id: I5ae8fd99789736f375c30250b546dea80defb4d0
pull/519/head
Richard Fuchs 8 years ago
parent
commit
1099cf1bda
3 changed files with 16 additions and 2 deletions
  1. +4
    -0
      daemon/codec.c
  2. +7
    -0
      daemon/dtls.c
  3. +5
    -2
      daemon/ssrc.c

+ 4
- 0
daemon/codec.c View File

@ -380,6 +380,9 @@ next:
} }
} }
while (passthrough_handlers) {
passthrough_handlers = g_slist_delete_link(passthrough_handlers, passthrough_handlers);
}
} }
@ -742,6 +745,7 @@ static int handler_func_transcode(struct codec_handler *h, struct call_media *me
if (packet_sequencer_insert(&ch->sequencer, &packet->p)) { if (packet_sequencer_insert(&ch->sequencer, &packet->p)) {
// dupe // dupe
mutex_unlock(&ch->lock); mutex_unlock(&ch->lock);
obj_put(&ch->h);
__transcode_packet_free(packet); __transcode_packet_free(packet);
ilog(LOG_DEBUG, "Ignoring duplicate RTP packet"); ilog(LOG_DEBUG, "Ignoring duplicate RTP packet");
atomic64_inc(&mp->ssrc_in->duplicates); atomic64_inc(&mp->ssrc_in->duplicates);


+ 7
- 0
daemon/dtls.c View File

@ -768,6 +768,13 @@ void dtls_shutdown(struct packet_stream *ps) {
__DBG("dtls_shutdown"); __DBG("dtls_shutdown");
if (ps->ice_dtls.init) {
if (ps->ice_dtls.connected && ps->ice_dtls.ssl) {
SSL_shutdown(ps->ice_dtls.ssl);
}
dtls_connection_cleanup(&ps->ice_dtls);
}
for (GList *l = ps->sfds.head; l; l = l->next) { for (GList *l = ps->sfds.head; l; l = l->next) {
struct stream_fd *sfd = l->data; struct stream_fd *sfd = l->data;


+ 5
- 2
daemon/ssrc.c View File

@ -272,6 +272,7 @@ found:;
if (rtt <= 0 || rtt > 10000000) { if (rtt <= 0 || rtt > 10000000) {
ilog(LOG_DEBUG, "Invalid RTT - discarding"); ilog(LOG_DEBUG, "Invalid RTT - discarding");
obj_put(&e->h);
return 0; return 0;
} }
@ -321,13 +322,13 @@ void ssrc_receiver_report(struct call_media *m, const struct ssrc_receiver_repor
// determine the clock rate for jitter values // determine the clock rate for jitter values
if (pt < 0) { if (pt < 0) {
ilog(LOG_DEBUG, "No payload type known for RTCP RR, discarding"); ilog(LOG_DEBUG, "No payload type known for RTCP RR, discarding");
goto out_nl;
goto out_nl_put;
} }
const struct rtp_payload_type *rpt = rtp_payload_type(pt, m->codecs_send); const struct rtp_payload_type *rpt = rtp_payload_type(pt, m->codecs_send);
if (!rpt) { if (!rpt) {
ilog(LOG_INFO, "Invalid RTP payload type %i, discarding RTCP RR", pt); ilog(LOG_INFO, "Invalid RTP payload type %i, discarding RTCP RR", pt);
goto out_nl;
goto out_nl_put;
} }
unsigned int jitter = rpt->clock_rate ? (rr->jitter * 1000 / rpt->clock_rate) : rr->jitter; unsigned int jitter = rpt->clock_rate ? (rr->jitter * 1000 / rpt->clock_rate) : rr->jitter;
ilog(LOG_DEBUG, "Calculated jitter for %x is %u ms", rr->ssrc, jitter); ilog(LOG_DEBUG, "Calculated jitter for %x is %u ms", rr->ssrc, jitter);
@ -374,6 +375,8 @@ void ssrc_receiver_report(struct call_media *m, const struct ssrc_receiver_repor
out_ul_oe: out_ul_oe:
mutex_unlock(&other_e->h.lock); mutex_unlock(&other_e->h.lock);
goto out_nl_put;
out_nl_put:
obj_put(&other_e->h); obj_put(&other_e->h);
goto out_nl; goto out_nl;
out_nl: out_nl:


Loading…
Cancel
Save