diff --git a/database.c b/database.c index a192e6b12..6179affbd 100644 --- a/database.c +++ b/database.c @@ -309,13 +309,21 @@ void save_to_DB(void) return; } + int currenttimestamp = time(NULL); for(i = lastdbindex; i < counters.queries; i++) { validate_access("queries", i, true, __LINE__, __FUNCTION__, __FILE__); - if(queries[i].timestamp <= lasttimestamp || queries[i].db || !queries[i].complete) + if(queries[i].timestamp <= lasttimestamp || queries[i].db) // Already in database or not yet complete continue; + if(!queries[i].complete && queries[i].timestamp > currenttimestamp-2) + { + // Break if a brand new query (age < 2 seconds) is not yet completed + // giving it a chance to be stored next time + break; + } + // Memory checks validate_access("queries", i, true, __LINE__, __FUNCTION__, __FILE__); validate_access("domains", queries[i].domainID, true, __LINE__, __FUNCTION__, __FILE__);