diff --git a/btpd/torrent.c b/btpd/torrent.c index 427e147..9d9fa8d 100644 --- a/btpd/torrent.c +++ b/btpd/torrent.c @@ -156,12 +156,14 @@ torrent_kill(struct torrent *tp) assert(!(tr_active(tp) || net_active(tp) || cm_active(tp))); m_ntorrents--; BTPDQ_REMOVE(&m_torrents, tp, entry); - tr_kill(tp); - net_kill(tp); - cm_kill(tp); + if (!tp->delete) + tlib_update_info(tp->tl); tp->tl->tp = NULL; if (tp->delete) tlib_del(tp->tl); + tr_kill(tp); + net_kill(tp); + cm_kill(tp); mi_free_files(tp->nfiles, tp->files); free(tp); if (m_ntorrents == 0) @@ -174,7 +176,6 @@ torrent_stop(struct torrent *tp) int tra, cma; switch (tp->state) { case T_ACTIVE: - tlib_update_info(tp->tl); case T_STARTING: tp->state = T_STOPPING; if (net_active(tp))