projects
/
project
/
ubus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lua: forward return codes from lua to ubus
[project/ubus.git]
/
lua
/
ubus.c
diff --git
a/lua/ubus.c
b/lua/ubus.c
index
0f2338c
..
92fb0a1
100644
(file)
--- a/
lua/ubus.c
+++ b/
lua/ubus.c
@@
-285,6
+285,7
@@
ubus_method_handler(struct ubus_context *ctx, struct ubus_object *obj,
struct blob_attr *msg)
{
struct ubus_lua_object *o = container_of(obj, struct ubus_lua_object, o);
struct blob_attr *msg)
{
struct ubus_lua_object *o = container_of(obj, struct ubus_lua_object, o);
+ int rv = 0;
lua_getglobal(state, "__ubus_cb");
lua_rawgeti(state, -1, o->r);
lua_getglobal(state, "__ubus_cb");
lua_rawgeti(state, -1, o->r);
@@
-298,11
+299,13
@@
ubus_method_handler(struct ubus_context *ctx, struct ubus_object *obj,
lua_pushnil(state);
else
ubus_lua_parse_blob_array(state, blob_data(msg), blob_len(msg), true);
lua_pushnil(state);
else
ubus_lua_parse_blob_array(state, blob_data(msg), blob_len(msg), true);
- lua_call(state, 2, 0);
+ lua_call(state, 2, 1);
+ if (lua_isnumber(state, -1))
+ rv = lua_tonumber(state, -1);
} else
lua_pop(state, 1);
} else
lua_pop(state, 1);
- return
0
;
+ return
rv
;
}
static int lua_gettablelen(lua_State *L, int index)
}
static int lua_gettablelen(lua_State *L, int index)