Commit 670afbe8 authored by Michał Kępień's avatar Michał Kępień
Browse files

Fix GeoIP2 memory leak upon reconfiguration

Loaded GeoIP2 databases are only released when named is shut down, but
not during server reconfiguration.  This causes memory to be leaked
every time "rndc reconfig" or "rndc reload" is used, as long as any
GeoIP2 database is in use.  Fix by releasing any loaded GeoIP2 databases
before reloading them.  Do not call dns_geoip_shutdown() until server
shutdown as that function releases the memory context used for caching
GeoIP2 lookup results.
parent 289f143d
......@@ -137,6 +137,4 @@ named_geoip_shutdown(void) {
named_g_geoip->domain = NULL;
}
#endif /* HAVE_GEOIP2 */
dns_geoip_shutdown();
}
......@@ -68,6 +68,7 @@
#include <dns/events.h>
#include <dns/forward.h>
#include <dns/fixedname.h>
#include <dns/geoip.h>
#include <dns/journal.h>
#include <dns/kasp.h>
#include <dns/keytable.h>
......@@ -8338,6 +8339,10 @@ load_configuration(const char *filename, named_server_t *server,
isc_socketmgr_setreserved(named_g_socketmgr, reserved);
#if defined(HAVE_GEOIP2)
/*
* Release any previously opened GeoIP2 databases.
*/
named_geoip_shutdown();
/*
* Initialize GeoIP databases from the configured location.
* This should happen before configuring any ACLs, so that we
......@@ -9742,6 +9747,7 @@ shutdown_server(isc_task_t *task, isc_event_t *event) {
#endif
#if defined(HAVE_GEOIP2)
named_geoip_shutdown();
dns_geoip_shutdown();
#endif /* HAVE_GEOIP2 */
dns_db_detach(&server->in_roothints);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment