static void closeBlocklists (tr_session *);
+static void
+sessionCloseImplWaitForIdleUdp (evutil_socket_t foo UNUSED,
+ short bar UNUSED,
+ void * vsession);
+
static void
sessionCloseImplStart (tr_session * session)
{
tr_cacheFree (session->cache);
session->cache = NULL;
+
+ /* saveTimer is not used at this point, reusing for UDP shutdown wait */
+ assert (session->saveTimer == NULL);
+ session->saveTimer = evtimer_new (session->event_base, sessionCloseImplWaitForIdleUdp, session);
+ tr_timerAdd (session->saveTimer, 0, 0);
}
static void
-sessionCloseImplFinish (tr_session * session)
-{
- /* we had to wait until UDP trackers were closed before closing these: */
- evdns_base_free (session->evdns_base, 0);
- session->evdns_base = NULL;
- tr_tracker_udp_close (session);
- tr_udpUninit (session);
-
- tr_statsClose (session);
- tr_peerMgrFree (session->peerMgr);
-
- closeBlocklists (session);
-
- tr_fdClose (session);
-
- session->isClosed = true;
-}
+sessionCloseImplFinish (tr_session * session);
static void
sessionCloseImplWaitForIdleUdp (evutil_socket_t foo UNUSED,
sessionCloseImplFinish (session);
}
+static void
+sessionCloseImplFinish (tr_session * session)
+{
+ /* we had to wait until UDP trackers were closed before closing these: */
+ evdns_base_free (session->evdns_base, 0);
+ session->evdns_base = NULL;
+ tr_tracker_udp_close (session);
+ tr_udpUninit (session);
+
+ tr_statsClose (session);
+ tr_peerMgrFree (session->peerMgr);
+
+ closeBlocklists (session);
+
+ tr_fdClose (session);
+
+ session->isClosed = true;
+}
+
static void
sessionCloseImpl (void * vsession)
{
assert (tr_isSession (session));
sessionCloseImplStart (session);
-
- /* saveTimer is not used at this point, reusing for UDP shutdown wait */
- assert (session->saveTimer == NULL);
- session->saveTimer = evtimer_new (session->event_base, sessionCloseImplWaitForIdleUdp, session);
- tr_timerAdd (session->saveTimer, 0, 0);
}
static int