"(expected number got %s)",
fn, luaL_typename(L, -2));
err = -1;
- } else if (!lua_isstring(L, -1) && !lua_istable(L, -1)) {
+ } else if (!lua_isstring(L, -1) && !lua_istable(L, -1) && !lua_isnil(L, -1)) {
*error_r = t_strdup_printf("db-lua: %s(req) invalid return value "
- "(expected string or table, got %s)",
+ "(expected nil, string or table, got %s)",
fn, luaL_typename(L, -1));
err = -1;
}
if (ret != PASSDB_RESULT_OK && ret != PASSDB_RESULT_NEXT) {
*error_r = str;
- } else {
+ } else if (str != NULL) {
auth_lua_export_fields(req, str, scheme_r, password_r);
}
AUTH_LUA_PASSWORD_VERIFY,
luaL_typename(L, -2));
err = -1;
- } else if (!lua_isstring(L, -1) && !lua_istable(L, -1)) {
+ } else if (!lua_isstring(L, -1) && !lua_istable(L, -1) && !lua_isnil(L, -1)) {
*error_r = t_strdup_printf("db-lua: %s invalid return value "
- "(expected string or table, got %s)",
+ "(expected nil, string or table, got %s)",
AUTH_LUA_PASSWORD_VERIFY,
luaL_typename(L, -1));
err = -1;
*error_r = str;
return ret;
}
- auth_lua_export_fields(req, str, NULL, NULL);
+ if (str != NULL)
+ auth_lua_export_fields(req, str, NULL, NULL);
return USERDB_RESULT_OK;
}