daemon: Remove scheduled jobs before unloading plugins
authorTobias Brunner <tobias@strongswan.org>
Thu, 5 Mar 2015 09:08:33 +0000 (10:08 +0100)
committerTobias Brunner <tobias@strongswan.org>
Mon, 9 Mar 2015 14:58:06 +0000 (15:58 +0100)
Especially callback jobs might refer to memory that gets invalid after
the plugins got unlaoded, so make sure we destroy these jobs before.

References #840.

src/libcharon/daemon.c

index d44cb37..b1b8f57 100644 (file)
@@ -474,8 +474,9 @@ static void destroy(private_daemon_t *this)
        DESTROY_IF(this->public.connect_manager);
        DESTROY_IF(this->public.mediation_manager);
 #endif /* ME */
-       /* make sure the cache is clear before unloading plugins */
+       /* make sure the cache and scheduler are clear before unloading plugins */
        lib->credmgr->flush_cache(lib->credmgr, CERT_ANY);
+       lib->scheduler->flush(lib->scheduler);
        lib->plugins->unload(lib->plugins);
        DESTROY_IF(this->public.attributes);
        DESTROY_IF(this->kernel_handler);