From: Marek Vavrusa Date: Fri, 22 Jan 2016 07:39:34 +0000 (-0800) Subject: daemon: resolve callback has request as well X-Git-Tag: v1.0.0-beta3~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f282a1d1c16574e650ce12345e04fba5df5dc40;p=thirdparty%2Fknot-resolver.git 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 --- diff --git a/daemon/README.rst b/daemon/README.rst index a93dbd7b7..3932ebb7b 100644 --- a/daemon/README.rst +++ b/daemon/README.rst @@ -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 diff --git a/daemon/bindings.c b/daemon/bindings.c index 0c62422c3..3b07a0a39 100644 --- a/daemon/bindings.c +++ b/daemon/bindings.c @@ -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)