diff --git a/libtransmission/shared.c b/libtransmission/shared.c index f614cd019..bf59aa92a 100644 --- a/libtransmission/shared.c +++ b/libtransmission/shared.c @@ -111,6 +111,7 @@ void tr_sharedClose( tr_shared_t * s ) tr_natpmpClose( s->natpmp ); tr_upnpClose( s->upnp ); tr_chokingClose( s->choking ); + free( s ); } /*********************************************************************** diff --git a/libtransmission/tracker.c b/libtransmission/tracker.c index 208244b5b..ed29b45da 100644 --- a/libtransmission/tracker.c +++ b/libtransmission/tracker.c @@ -536,9 +536,24 @@ void tr_trackerStopped( tr_tracker_t * tc ) void tr_trackerClose( tr_tracker_t * tc ) { tr_torrent_t * tor = tc->tor; + tr_info_t * inf = &tor->info; + tr_announce_list_ptr_t * cur, * curFree; + int ii; killHttp( &tc->http, tor->fdlimit ); killHttp( &tc->httpScrape, tor->fdlimit ); + + for( ii = 0; ii < inf->trackerTiers; ii++ ) + { + for( cur = tc->trackerAnnounceListPtr[ii]; cur; ) + { + curFree = cur; + cur = cur->nextItem; + free( curFree ); + } + } + free( tc->trackerAnnounceListPtr ); + free( tc->trackerid ); free( tc ); }