From: Nicola Pancheri <[email protected]> Exposes the ubus file descriptor sharing interface to Lua.
Signed-off-by: Nicola Pancheri <[email protected]> --- lua/ubus.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lua/ubus.c b/lua/ubus.c index e2bb081..8378a25 100644 --- a/lua/ubus.c +++ b/lua/ubus.c @@ -321,7 +321,8 @@ 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_call(state, 2, 1); + lua_pushnumber(state,req->req_fd); + lua_call(state, 3, 1); if (lua_isnumber(state, -1)) rv = lua_tonumber(state, -1); } @@ -668,6 +669,12 @@ ubus_lua_call(lua_State *L) const char *path = luaL_checkstring(L, 2); const char *func = luaL_checkstring(L, 3); + int fd = -1; + if( lua_isnumber(L,5) ){ + fd = lua_tointeger(L,5); + lua_pushvalue( L, 4 ); + } + luaL_checktype(L, 4, LUA_TTABLE); blob_buf_init(&c->buf, 0); @@ -688,7 +695,7 @@ ubus_lua_call(lua_State *L) } top = lua_gettop(L); - rv = ubus_invoke(c->ctx, id, func, c->buf.head, ubus_lua_call_cb, L, c->timeout * 1000); + rv = ubus_invoke_fd(c->ctx, id, func, c->buf.head, ubus_lua_call_cb, L, c->timeout * 1000, fd); if (rv != UBUS_STATUS_OK) { -- 2.25.1 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
