From 80daed0e7316fa466e5440a547e62e16ce993336 Mon Sep 17 00:00:00 2001 From: Luca Date: Fri, 30 Dec 2016 01:48:27 +0100 Subject: [PATCH] Slow down DNS possling in case of no address to resolve --- src/AddressResolution.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/AddressResolution.cpp b/src/AddressResolution.cpp index 8cb3d7b41e..123c797217 100644 --- a/src/AddressResolution.cpp +++ b/src/AddressResolution.cpp @@ -130,6 +130,8 @@ void AddressResolution::resolveHostName(char *_numeric_ip, char *symbolic, u_int static void* resolveLoop(void* ptr) { AddressResolution *a = (AddressResolution*)ptr; Redis *r = ntop->getRedis(); + u_int no_resolution_loops = 0; + const u_int max_num_idle_loops = 3; while(!ntop->getGlobals()->isShutdown()) { char numeric_ip[64]; @@ -138,8 +140,12 @@ static void* resolveLoop(void* ptr) { if(rc == 0) { if(numeric_ip[0] != '\0') a->resolveHostName(numeric_ip); - } else - sleep(1); + + no_resolution_loops = 0; + } else { + if(no_resolution_loops < max_num_idle_loops) no_resolution_loops++; + sleep(no_resolution_loops); + } } return(NULL);