ubus/lua: pass notification name to callback
authorDirk Feytons <dirk.feytons@gmail.com>
Tue, 16 Jan 2018 17:13:39 +0000 (18:13 +0100)
committerJohn Crispin <john@phrozen.org>
Wed, 17 Jan 2018 08:59:58 +0000 (09:59 +0100)
The callback function registered to be invoked when subscribing to a
notification was only passed the notification data (if any) but not the name
of the notification.

This name is now passed as second argument to remain backwards compatible.
The example subscriber.lua has also be updated.

Signed-off-by: Dirk Feytons <dirk.feytons@gmail.com>
lua/subscriber.lua
lua/ubus.c

index e1d3a9f356c2d880053de85f94f3511643267e0f..f59448db72c5e233ce70c908df0ccf21791f31c3 100755 (executable)
@@ -15,8 +15,9 @@ if not conn then
 end
 
 local sub = {
-       notify = function( msg )
-               print("Count: ", msg["count"])
+       notify = function( msg, name )
+               print("name:", name)
+               print("  count:", msg["count"])
        end,
 }
 
index cfe9c9b0abde93feb9447f334aced7d1c96d91b1..00d9e002a19095247546a992df67c190f47d6998 100644 (file)
@@ -787,10 +787,11 @@ ubus_sub_notify_handler(struct ubus_context *ctx, struct ubus_object *obj,
        if (lua_isfunction(state, -1)) {
                if( msg ){
                        ubus_lua_parse_blob_array(state, blob_data(msg), blob_len(msg), true);
-                       lua_call(state, 1, 0);
                } else {
-                       lua_call(state, 0, 0);
+                       lua_pushnil(state);
                }
+               lua_pushstring(state, method);
+               lua_call(state, 2, 0);
        } else {
                lua_pop(state, 1);
        }