Commit 7f282a1d authored by Marek Vavrusa's avatar Marek Vavrusa

daemon: resolve callback has request as well

the second parameter to resolve() callback function
is request (kres.request_t), so the caller can
look into request stats, timing and zone cut data
parent ac80d979
......@@ -354,7 +354,7 @@ Environment
:param number qtype: Query type (e.g. ``kres.type.NS``)
:param number qclass: Query class *(optional)* (e.g. ``kres.class.IN``)
:param number options: Resolution options (see query flags)
:param function callback: Callback to be executed when resolution completes (e.g. `function cb (pkt) end`). The callback gets a packet containing the final answer and doesn't have to return anything.
:param function callback: Callback to be executed when resolution completes (e.g. `function cb (pkt, req) end`). The callback gets a packet containing the final answer and doesn't have to return anything.
:return: boolean
Example:
......@@ -366,7 +366,7 @@ Environment
-- Query for AAAA record
resolve('example.com', kres.type.AAAA, kres.class.IN, 0,
function (answer)
function (answer, req)
-- Check answer RCODE
local pkt = kres.pkt_t(answer)
if pkt:rcode() == kres.rcode.NOERROR then
......
......@@ -617,7 +617,8 @@ static void resolve_callback(struct worker_ctx *worker, struct kr_request *req,
lua_rawgeti(L, LUA_REGISTRYINDEX, cb_ref);
luaL_unref(L, LUA_REGISTRYINDEX, cb_ref);
lua_pushlightuserdata(L, req->answer);
(void) execute_callback(L, 1);
lua_pushlightuserdata(L, req);
(void) execute_callback(L, 2);
}
static int wrk_resolve(lua_State *L)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment