lua_setfield(L, -2, "ipv6");
lua_pushnumber(L, worker->stats.ipv4);
lua_setfield(L, -2, "ipv4");
+ lua_pushnumber(L, worker->stats.queries);
+ lua_setfield(L, -2, "queries");
+ lua_pushnumber(L, worker->stats.dropped);
+ lua_setfield(L, -2, "dropped");
+ lua_pushnumber(L, worker->stats.timeout);
+ lua_setfield(L, -2, "timeout");
return 1;
}
uv_udp_init(loop, (uv_udp_t *)handle);
} else {
uv_tcp_init(loop, (uv_tcp_t *)handle);
+ uv_tcp_nodelay((uv_tcp_t *)handle, 1);
}
}
/* Start resolution */
kr_resolve_begin(&task->req, &engine->resolver, answer);
worker->stats.concurrent += 1;
+ worker->stats.queries += 1;
return task;
}
DEBUG_MSG("ioreq timeout %s %s %p\n", qname_str, type_str, req);
#endif
if (!uv_is_closing(handle)) {
+ struct worker_ctx *worker = task->worker;
+ worker->stats.queries += 1;
qr_task_step(task, NULL, NULL);
}
}
/* Ignore badly formed queries or responses. */
if (ret != 0 || knot_wire_get_qr(query->wire)) {
DEBUG_MSG("task bad_query %p => %d, %s\n", task, ret, kr_strerror(ret));
+ worker->stats.dropped += 1;
return kr_error(EINVAL); /* Ignore. */
}
task = qr_task_create(worker, handle, query, addr);