diff --git a/src/pluto/plutomain.c b/src/pluto/plutomain.c index e497aa02e..18ff7c987 100644 --- a/src/pluto/plutomain.c +++ b/src/pluto/plutomain.c @@ -707,9 +707,10 @@ exit_pluto(int status) stop_adns(); free_md_pool(); free_crypto(); - free_id(); + free_id(); /* free myids */ + free_events(); /* free remaining events */ delete_lock(); - library_deinit(); + library_deinit(); close_log(); exit(status); } diff --git a/src/pluto/timer.c b/src/pluto/timer.c index 472fd5cf2..860ed0042 100644 --- a/src/pluto/timer.c +++ b/src/pluto/timer.c @@ -529,4 +529,22 @@ delete_dpd_event(struct state *st) } } +/* + * Free remaining events + */ +void +free_events(void) +{ + struct event *ev_tmp, *ev; + + ev = evlist; + evlist = NULL; + + while (ev) + { + ev_tmp = ev; + ev = ev->ev_next; + free(ev_tmp); + } +} diff --git a/src/pluto/timer.h b/src/pluto/timer.h index f8337c843..300959116 100644 --- a/src/pluto/timer.h +++ b/src/pluto/timer.h @@ -32,3 +32,4 @@ extern long next_event(void); extern void delete_event(struct state *st); extern void delete_dpd_event(struct state *st); extern void daily_log_event(void); +extern void free_events(void);