From: Remi Gacogne Date: Fri, 4 Jan 2019 08:40:18 +0000 (+0100) Subject: rec: Fix a possible timing issue w/ RRSIGs in the SyncRes unit tests X-Git-Tag: rec-4.2.0-alpha1~64^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F7327%2Fhead;p=thirdparty%2Fpdns.git rec: Fix a possible timing issue w/ RRSIGs in the SyncRes unit tests --- diff --git a/pdns/recursordist/test-syncres_cc.cc b/pdns/recursordist/test-syncres_cc.cc index 22655c1fbd..5a361b15fe 100644 --- a/pdns/recursordist/test-syncres_cc.cc +++ b/pdns/recursordist/test-syncres_cc.cc @@ -9098,8 +9098,9 @@ BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_cache_validity) { g_luaconfs.setState(luaconfsCopy); size_t queriesCount = 0; + const time_t tnow = sr->getNow().tv_sec; - sr->setAsyncCallback([target,targetAddr,&queriesCount,keys](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional& srcmask, boost::optional context, LWResult* res, bool* chained) { + sr->setAsyncCallback([target,targetAddr,&queriesCount,keys,tnow](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional& srcmask, boost::optional context, LWResult* res, bool* chained) { queriesCount++; DNSName auth = domain; @@ -9111,14 +9112,13 @@ BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_cache_validity) { else { setLWResult(res, RCode::NoError, true, false, true); addRecordToLW(res, domain, QType::A, targetAddr.toString(), DNSResourceRecord::ANSWER, 3600); - addRRSIG(keys, res->d_records, domain, 1); + addRRSIG(keys, res->d_records, domain, 1, false, boost::none, boost::none, tnow); return 1; } return 0; }); - const time_t now = sr->getNow().tv_sec; vector ret; int res = sr->beginResolve(target, QType(QType::A), QClass::IN, ret); BOOST_CHECK_EQUAL(res, RCode::NoError); @@ -9130,10 +9130,10 @@ BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_cache_validity) { const ComboAddress who; vector cached; vector> signatures; - BOOST_REQUIRE_EQUAL(t_RC->get(now, target, QType(QType::A), true, &cached, who, &signatures), 1); + BOOST_REQUIRE_EQUAL(t_RC->get(tnow, target, QType(QType::A), true, &cached, who, &signatures), 1); BOOST_REQUIRE_EQUAL(cached.size(), 1); BOOST_REQUIRE_EQUAL(signatures.size(), 1); - BOOST_CHECK_EQUAL((cached[0].d_ttl - now), 1); + BOOST_CHECK_EQUAL((cached[0].d_ttl - tnow), 1); /* again, to test the cache */ ret.clear();