collectd: fix lua callback registration
If you want to register more than one lua plugin, you cannot start the collectd. You get always the error message: "The read function "lua/(null)" is already registered. Check for duplicates in your configuration!" This is not what I expect and what the documenation says. With this change it is now possible to registrate more then one lua Script. See https://github.com/collectd/collectd/pull/2379 Signed-off-by: Florian Eckert <fe@dev.tdt.de>
This commit is contained in:
parent
be86e43e22
commit
30db5cc1c1
|
@ -0,0 +1,42 @@
|
|||
--- a/src/lua.c
|
||||
+++ b/src/lua.c
|
||||
@@ -281,9 +281,6 @@ static int lua_cb_register_read(lua_Stat
|
||||
|
||||
luaL_checktype(L, 1, LUA_TFUNCTION);
|
||||
|
||||
- char function_name[DATA_MAX_NAME_LEN];
|
||||
- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
|
||||
-
|
||||
int callback_id = clua_store_callback(L, 1);
|
||||
if (callback_id < 0)
|
||||
return luaL_error(L, "%s", "Storing callback function failed");
|
||||
@@ -298,6 +295,9 @@ static int lua_cb_register_read(lua_Stat
|
||||
if (cb == NULL)
|
||||
return luaL_error(L, "%s", "calloc failed");
|
||||
|
||||
+ char function_name[DATA_MAX_NAME_LEN];
|
||||
+ snprintf(function_name, sizeof(function_name), "lua/%p", thread);
|
||||
+
|
||||
cb->lua_state = thread;
|
||||
cb->callback_id = callback_id;
|
||||
cb->lua_function_name = strdup(function_name);
|
||||
@@ -325,9 +325,6 @@ static int lua_cb_register_write(lua_Sta
|
||||
|
||||
luaL_checktype(L, 1, LUA_TFUNCTION);
|
||||
|
||||
- char function_name[DATA_MAX_NAME_LEN] = "";
|
||||
- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
|
||||
-
|
||||
int callback_id = clua_store_callback(L, 1);
|
||||
if (callback_id < 0)
|
||||
return luaL_error(L, "%s", "Storing callback function failed");
|
||||
@@ -342,6 +339,9 @@ static int lua_cb_register_write(lua_Sta
|
||||
if (cb == NULL)
|
||||
return luaL_error(L, "%s", "calloc failed");
|
||||
|
||||
+ char function_name[DATA_MAX_NAME_LEN] = "";
|
||||
+ snprintf(function_name, sizeof(function_name), "lua/%p", thread);
|
||||
+
|
||||
cb->lua_state = thread;
|
||||
cb->callback_id = callback_id;
|
||||
cb->lua_function_name = strdup(function_name);
|
Loading…
Reference in New Issue