From 3c29ea95e02305267b701b2d4ff4ce0d8b4e0f3f Mon Sep 17 00:00:00 2001 From: Jerzy Ptak Date: Thu, 5 Apr 2018 01:58:16 +0100 Subject: [PATCH] fixing memory leaks Change-Id: Ibd7190a86bb5d55b0d8c070668b4d6c66f63470c --- daemon/dtls.c | 7 +++++++ daemon/ssrc.c | 12 ++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/daemon/dtls.c b/daemon/dtls.c index d9b6fc298..1bd4efd0c 100644 --- a/daemon/dtls.c +++ b/daemon/dtls.c @@ -752,6 +752,13 @@ void dtls_shutdown(struct packet_stream *ps) { __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) { struct stream_fd *sfd = l->data; diff --git a/daemon/ssrc.c b/daemon/ssrc.c index 41df2088a..09480089f 100644 --- a/daemon/ssrc.c +++ b/daemon/ssrc.c @@ -255,6 +255,7 @@ found:; if (rtt <= 0 || rtt > 10000000) { ilog(LOG_DEBUG, "Invalid RTT - discarding"); + obj_put(&e->h); return 0; } @@ -303,17 +304,14 @@ void ssrc_receiver_report(struct call_media *m, const struct ssrc_receiver_repor // determine the clock rate for jitter values if (pt < 0) { - pt = other_e->payload_type; - if (pt < 0) { - ilog(LOG_DEBUG, "No payload type known for RTCP RR, discarding"); - goto out_nl; - } + ilog(LOG_DEBUG, "No payload type known for RTCP RR, discarding"); + goto out_nl_put; } const struct rtp_payload_type *rpt = rtp_payload_type(pt, m->rtp_payload_types); if (!rpt) { 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; ilog(LOG_DEBUG, "Calculated jitter for %u is %u ms", rr->ssrc, jitter); @@ -360,6 +358,8 @@ void ssrc_receiver_report(struct call_media *m, const struct ssrc_receiver_repor out_ul_oe: mutex_unlock(&other_e->h.lock); + goto out_nl_put; +out_nl_put: obj_put(&other_e->h); goto out_nl; out_nl: