/** Store RTT in infra cache */
static void
do_infra_rtt(struct replay_runtime* runtime)
{
	struct replay_moment* now = runtime->now;
	int rto = infra_rtt_update(runtime->infra, &now->addr,
		now->addrlen, atoi(now->string), -1, runtime->now_secs);
	log_addr(0, "INFRA_RTT for", &now->addr, now->addrlen);
	log_info("INFRA_RTT(roundtrip %d): rto of %d", atoi(now->string), rto);
	if(rto == 0) fatal_exit("infra_rtt_update failed");
}
示例#2
0
/** perform exponential backoff on the timout */
static void
expon_timeout_backoff(struct replay_runtime* runtime)
{
	struct fake_pending* p = runtime->pending_list;
	int rtt, vs;
	uint8_t edns_lame_known;
	int last_rtt, rto;
	if(!p) return; /* no pending packet to backoff */
	if(!infra_host(runtime->infra, &p->addr, p->addrlen, p->zone,
		p->zonelen, runtime->now_secs, &vs, &edns_lame_known, &rtt))
		return;
	last_rtt = rtt;
	rto = infra_rtt_update(runtime->infra, &p->addr, p->addrlen, p->zone,
		p->zonelen, p->qtype, -1, last_rtt, runtime->now_secs);
	log_info("infra_rtt_update returned rto %d", rto);
}
示例#3
0
/** Store RTT in infra cache */
static void
do_infra_rtt(struct replay_runtime* runtime)
{
	struct replay_moment* now = runtime->now;
	int rto;
	size_t dplen = 0;
	uint8_t* dp = sldns_str2wire_dname(now->variable, &dplen);
	if(!dp) fatal_exit("cannot parse %s", now->variable);
	rto = infra_rtt_update(runtime->infra, &now->addr, now->addrlen,
		dp, dplen, LDNS_RR_TYPE_A, atoi(now->string),
		-1, runtime->now_secs);
	log_addr(0, "INFRA_RTT for", &now->addr, now->addrlen);
	log_info("INFRA_RTT(%s roundtrip %d): rto of %d", now->variable,
		atoi(now->string), rto);
	if(rto == 0) fatal_exit("infra_rtt_update failed");
	free(dp);
}