From f589cc476697815f75bcb34149ed7a4c175cc2c2 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 18 Dec 2020 16:06:34 +0000 Subject: [PATCH] [Minor] Support both text and string on return value --- src/lua/lua_worker.c | 34 ++++++++++++++-------------------- 1 file 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))); } } -- 2.39.5