tv.tv_usec = 0;
#endif
if(tv.tv_sec != 0)
- comm_timer_set(worker->probe_timer, &tv);
+ comm_timer_set(worker->env.probe_timer, &tv);
}
struct worker*
if(!worker->stat_timer) {
log_err("could not create statistics timer");
}
- /* one probe timer per process -- if we have 5011 anchors */
- if(autr_get_num_anchors(worker->daemon->env->anchors) > 0
-#ifndef THREADS_DISABLED
- && worker->thread_num == 0
-#endif
- ) {
- struct timeval tv;
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- worker->probe_timer = comm_timer_create(worker->base,
- worker_probe_timer_cb, worker);
- if(!worker->probe_timer) {
- log_err("could not create 5011-probe timer");
- }
- /* let timer fire, then it can reset itself */
- comm_timer_set(worker->probe_timer, &tv);
- }
/* we use the msg_buffer_size as a good estimate for what the
* user wants for memory usage sizes */
worker_delete(worker);
return 0;
}
+ /* one probe timer per process -- if we have 5011 anchors */
+ if(autr_get_num_anchors(worker->env.anchors) > 0
+#ifndef THREADS_DISABLED
+ && worker->thread_num == 0
+#endif
+ ) {
+ struct timeval tv;
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ worker->env.probe_timer = comm_timer_create(worker->base,
+ worker_probe_timer_cb, worker);
+ if(!worker->env.probe_timer) {
+ log_err("could not create 5011-probe timer");
+ }
+ /* let timer fire, then it can reset itself */
+ comm_timer_set(worker->env.probe_timer, &tv);
+ }
if(!worker->env.mesh || !worker->env.scratch_buffer) {
worker_delete(worker);
return 0;
comm_signal_delete(worker->comsig);
tube_delete(worker->cmd);
comm_timer_delete(worker->stat_timer);
- comm_timer_delete(worker->probe_timer);
+ comm_timer_delete(worker->env.probe_timer);
free(worker->ports);
if(worker->thread_num == 0) {
log_set_time(NULL);
struct comm_point* cmd_com;
/** timer for statistics */
struct comm_timer* stat_timer;
- /** timer for autotrust probes */
- struct comm_timer* probe_timer;
/** number of requests that can be handled by this worker */
size_t request_size;
+2 October 2009: Wouter
+ - improve 5011 modularization.
+ - fix unbound-host so -d can be given before -C.
+
28 September 2009: Wouter
- autotrust-anchor-file can read multiline input and $ORIGIN.
- prevent integer overflow in holddown calculation. review fixes.
return NULL;
}
w->env->worker = (struct worker*)w;
+ w->env->probe_timer = NULL;
seed = (unsigned int)time(NULL) ^ (unsigned int)getpid() ^
(((unsigned int)w->thread_num)<<17);
seed ^= (unsigned int)w->env->alloc->next_id;
/** negative cache, configured by the validator. if not NULL,
* contains NSEC record lookup trees. */
struct val_neg_cache* neg_cache;
+ /** the 5011-probe timer (if any) */
+ struct comm_timer* probe_timer;
/** Mapping of forwarding zones to targets.
* iterator forwarder information. per-thread, created by worker */
struct iter_forwards* fwds;
#include "services/mesh.h"
#include "services/cache/rrset.h"
#include "validator/val_kcache.h"
-#include "daemon/worker.h"
/** number of times a key must be seen before it can become valid */
#define MIN_PENDINGCOUNT 2
static void
reset_worker_timer(struct module_env* env)
{
- struct worker* worker = env->worker;
struct timeval tv;
#ifndef S_SPLINT_S
uint32_t next = (uint32_t)wait_probe_time(env->anchors);
/* in case this is libunbound, no timer */
- if(!worker || !worker->probe_timer)
+ if(!env->probe_timer)
return;
if(next > *env->now)
tv.tv_sec = (time_t)(next - *env->now);
else tv.tv_sec = 0;
#endif
tv.tv_usec = 0;
- comm_timer_set(worker->probe_timer, &tv);
+ comm_timer_set(env->probe_timer, &tv);
verbose(VERB_ALGO, "scheduled next probe in %d sec", (int)tv.tv_sec);
}