aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lua/lua_worker.c34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/lua/lua_worker.c b/src/lua/lua_worker.c
index c11e49f2e..f9031c10a 100644
--- a/src/lua/lua_worker.c
+++ b/src/lua/lua_worker.c
@@ -499,8 +499,6 @@ rspamd_lua_execute_lua_subprocess (lua_State *L,
{
gint err_idx, r;
guint64 wlen = 0;
- const gchar *ret = NULL;
- gsize retlen;
lua_pushcfunction (L, &rspamd_lua_traceback);
err_idx = lua_gettop (L);
@@ -526,29 +524,25 @@ rspamd_lua_execute_lua_subprocess (lua_State *L,
}
}
else {
- if (lua_type (L, -1) == LUA_TSTRING) {
- ret = lua_tolstring (L, -1, &retlen);
- wlen = retlen;
- }
- else {
- struct rspamd_lua_text *t;
+ struct rspamd_lua_text *t = lua_check_text_or_string (L, -1);
- t = lua_check_text (L, -1);
+ if (t) {
+ wlen = t->len;
+ r = write (cbdata->sp[1], &wlen, sizeof (wlen));
- if (t) {
- ret = t->start;
- wlen = t->len;
+ if (r == -1) {
+ msg_err ("write failed: %s", strerror (errno));
}
- }
- r = write (cbdata->sp[1], &wlen, sizeof (wlen));
- if (r == -1) {
- msg_err ("write failed: %s", strerror (errno));
- }
+ r = write (cbdata->sp[1], t->start, wlen);
- r = write (cbdata->sp[1], ret, wlen);
- if (r == -1) {
- msg_err ("write failed: %s", strerror (errno));
+ if (r == -1) {
+ msg_err ("write failed: %s", strerror (errno));
+ }
+ }
+ else {
+ msg_err ("subprocess: invalid return value: %s",
+ lua_typename (L, lua_type (L, -1)));
}
}