commit f589cc4: [Minor] Support both text and string on return value

Vsevolod Stakhov vsevolod at highsecure.ru
Fri Dec 18 16:14:09 UTC 2020


Author: Vsevolod Stakhov
Date: 2020-12-18 16:06:34 +0000
URL: https://github.com/rspamd/rspamd/commit/f589cc476697815f75bcb34149ed7a4c175cc2c2

[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)));
 		}
 	}
 


More information about the Commits mailing list