diff options
Diffstat (limited to 'src/lua/lua_dns.c')
-rw-r--r-- | src/lua/lua_dns.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/lua/lua_dns.c b/src/lua/lua_dns.c index fde9da422..dedadeae5 100644 --- a/src/lua/lua_dns.c +++ b/src/lua/lua_dns.c @@ -60,6 +60,7 @@ struct lua_dns_cbdata { struct rspamd_dns_resolver *resolver; gint cbref; const gchar *to_resolve; + const gchar *user_str; }; static void @@ -137,7 +138,14 @@ lua_dns_callback (struct rspamd_dns_reply *reply, gpointer arg) lua_pushstring (cd->L, dns_strerror (reply->code)); } - if (lua_pcall (cd->L, 4, 0, 0) != 0) { + if (cd->user_str != NULL) { + lua_pushstring (cd->L, cd->user_str); + } + else { + lua_pushnil (cd->L); + } + + if (lua_pcall (cd->L, 5, 0, 0) != 0) { msg_info ("call to dns_callback failed: %s", lua_tostring (cd->L, -1)); } @@ -210,6 +218,14 @@ lua_dns_resolver_resolve_common (lua_State *L, struct rspamd_dns_resolver *resol cbdata->to_resolve = memory_pool_strdup (pool, to_resolve); lua_pushvalue (L, 5); cbdata->cbref = luaL_ref (L, LUA_REGISTRYINDEX); + + if (lua_gettop (L) > 5) { + cbdata->user_str = lua_tostring (L, 6); + } + else { + cbdata->user_str = NULL; + } + if (type == DNS_REQUEST_PTR) { make_dns_request (resolver, session, pool, lua_dns_callback, cbdata, type, &ina); } |