X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Ftincd.c;h=c4e8fad3746cd5d11a430a245b41e2a72563a788;hb=0966cca8ab6dcde2747c717f21d73fd332e04242;hp=1d44a8ad66500ccd279c7a041af379419ebdd2fe;hpb=df3220a1549f992cbf4a9b6e67c1e67b69896c7d;p=tinc diff --git a/src/tincd.c b/src/tincd.c index 1d44a8ad..c4e8fad3 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -1,7 +1,7 @@ /* tincd.c -- the main file for tincd - Copyright (C) 1998-2005 Ivo Timmermans - 2000-2005 Guus Sliepen + Copyright (C) 1998-2005 Ivo Timmermans + 2000-2008 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,8 +35,9 @@ #include #include #include +#include -#include +#include LZO1X_H #include #include "pidfile.h" @@ -391,6 +392,14 @@ static void make_names(void) } } +static void free_names() { + if (identname) free(identname); + if (netname) free(netname); + if (pidfilename) free(pidfilename); + if (logfilename) free(logfilename); + if (confbase) free(confbase); +} + int main(int argc, char **argv) { program_name = argv[0]; @@ -407,7 +416,7 @@ int main(int argc, char **argv) if(show_version) { printf(_("%s version %s (built %s %s, protocol %d)\n"), PACKAGE, VERSION, __DATE__, __TIME__, PROT_CURRENT); - printf(_("Copyright (C) 1998-2005 Ivo Timmermans, Guus Sliepen and others.\n" + printf(_("Copyright (C) 1998-2008 Ivo Timmermans, Guus Sliepen and others.\n" "See the AUTHORS file for a complete list.\n\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" "and you are welcome to redistribute it under certain conditions;\n" @@ -448,6 +457,9 @@ int main(int argc, char **argv) RAND_load_file("/dev/urandom", 1024); + ENGINE_load_builtin_engines(); + ENGINE_register_all_complete(); + OpenSSL_add_all_algorithms(); if(generate_keys) { @@ -494,17 +506,26 @@ int main2(int argc, char **argv) /* Shutdown properly. */ - close_network_connections(); - ifdebug(CONNECTIONS) dump_device_stats(); + close_network_connections(); + end: logger(LOG_NOTICE, _("Terminating")); #ifndef HAVE_MINGW remove_pid(pidfilename); #endif + + EVP_cleanup(); + ENGINE_cleanup(); + CRYPTO_cleanup_all_ex_data(); + ERR_remove_state(0); + ERR_free_strings(); + + exit_configuration(&config_tree); + free_names(); return status; }